[C] implémentation correcte ?
toto
-
Stupeflip Messages postés 391 Date d'inscription Statut Membre Dernière intervention -
Stupeflip Messages postés 391 Date d'inscription Statut Membre Dernière intervention -
Simple question : une fonction comme la suivante est-elle bien impléentée ? Je veux savoir ici si c'est correct de ne pas allouer ni libérer.
char * __ckbbool(BOOL b) { char *res; if(b != 0) { res = "TRUE"; } else { res = "FALSE"; } return res; }
A voir également:
- [C] implémentation correcte ?
- Vérifier si une phrase est correcte - Accueil - Google
- Url correcte - Guide
- Hum, cette adresse ne semble pas valide. vérifiez que l’url est correcte puis réessayez. ✓ - Forum Mozilla Firefox
- Mom implementation ✓ - Forum Carte graphique
- Probleme d'implémentation d'un algorithme en c - Forum C++
4 réponses
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"