[C] implémentation correcte ?
Fermé
toto
-
4 mai 2007 à 10:11
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 4 mai 2007 à 17:02
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 4 mai 2007 à 17:02
A voir également:
- [C] implémentation correcte ?
- Vérifier si une phrase est correcte - Accueil - Google
- Url correcte - Guide
- Implémentation cbase non disponible ✓ - Forum Windows
- Mom implementation ✓ - Forum Carte graphique
- Hum, cette adresse ne semble pas valide. vérifiez que l’url est correcte puis réessayez. ✓ - Forum Mozilla Firefox
4 réponses
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
4 mai 2007 à 10:20
4 mai 2007 à 10:20
Salut,
Non ce n'est effectivement pas bien implémenté pour les raisons que tu cites. Mais comme il ne peut avoir que deux valeurs possibles, ne peux-tu pas mettre une taille fixe ?
Non ce n'est effectivement pas bien implémenté pour les raisons que tu cites. Mais comme il ne peut avoir que deux valeurs possibles, ne peux-tu pas mettre une taille fixe ?
char res[5];Ou alors un malloc après le if et le else mais il ne faudra pas oublier le free après.
ok, sachant que je retourne ma variable res et donc pour éviter d'oubli de free je vias déclarer une taille fixe comme tu l'as proposé.
Merci pour ta réponse rapide.
Merci pour ta réponse rapide.
Non, c'est mal.
et l'utilisation de Res[5] ne marche pas car en dehor de ta fonction
res n'est plus accessible (a mois d'utiliser une variable globale (ce qui est à proscrire).
tu ne peut retourner de tableau avec un return.
Le mieu est le passage par parametre :
bool __MonCheck( bool b, char * Res)
{
if(b)
{
if(Res != NULL) Res = "TRUE";
return b;
}
else
{
if(Res != NULL) Res = "FALSE";
return b;
}
}
ainsi
char Résultat[10];
if(__MyCheck(bCondition,Résultat))
prinft("OK,%s",Résultat);
else
printf("NOk,%s",Résultat);
Affiche : "OK,TRUE" ou" NOK,FALSE"
et if(__MyCheck(bCondition,NULL))
ne plante pas, bien sur tu a le risque de mettre un pointeur ne disposant pas de 6 octets de mémoire pour mettre "FALSE\0"
et l'utilisation de Res[5] ne marche pas car en dehor de ta fonction
res n'est plus accessible (a mois d'utiliser une variable globale (ce qui est à proscrire).
tu ne peut retourner de tableau avec un return.
Le mieu est le passage par parametre :
bool __MonCheck( bool b, char * Res)
{
if(b)
{
if(Res != NULL) Res = "TRUE";
return b;
}
else
{
if(Res != NULL) Res = "FALSE";
return b;
}
}
ainsi
char Résultat[10];
if(__MyCheck(bCondition,Résultat))
prinft("OK,%s",Résultat);
else
printf("NOk,%s",Résultat);
Affiche : "OK,TRUE" ou" NOK,FALSE"
et if(__MyCheck(bCondition,NULL))
ne plante pas, bien sur tu a le risque de mettre un pointeur ne disposant pas de 6 octets de mémoire pour mettre "FALSE\0"
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
4 mai 2007 à 17:02
4 mai 2007 à 17:02
Je vois pas trop comment tu peux affirmer que la variable globale est à proscrire en voyant juste une fonction ... Enfin c'est comme les goto et les pointeurs, bien utilisés, c'est pas une tare, bien au contraire ...