Chaine de caractère case vide
Fermé
Naji_El_khomssi
Messages postés
12
Date d'inscription
dimanche 4 janvier 2015
Statut
Membre
Dernière intervention
22 avril 2016
-
Modifié par Naji_El_khomssi le 12/01/2015 à 18:56
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 19 janv. 2015 à 15:22
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 19 janv. 2015 à 15:22
A voir également:
- Caractere vide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Supprimer page word vide - Guide
- Coeur vide ✓ - Forum Facebook
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 12/01/2015 à 19:54
Modifié par gravgun le 12/01/2015 à 19:54
'lut, premièrement l'indentation est absente, il est très recommandé d'en mettre si tu comptes lire plus facilement ton programme.
Ensuite:
Il manque un
Il manque un spécificateur de type de retour, et bien qu'implicitement assumé comme étant un
Ajoute un
from human import idiocy
del idiocy
Ensuite:
scanf ("%s",&T);T étant un tableau, c'est déjà un pointeur vers la zone mémoire voulue, donc pas de
&a mettre devant.
taille(T)tu appelles taille() avant l'avoir déclaré ou défini; déplace toute la fonction au dessus du
main().
Il manque un
return 0;a la fin du
main().
taille(int T[100])
Il manque un spécificateur de type de retour, et bien qu'implicitement assumé comme étant un
int(ce que tu veux ici), il faut le préciser.
int T[100], qui créé un nouveau tableau inutilement, est a remplacer par un pointeur du bon type (i.e. le même que
Tde
main()):
char *T.
for (i=0;i<100;i+=1) if (T[i] != 0) t=t+1;Ta boucle ne s'arrête pas quand elle rencontre un
'\0', elle ne compte juste pas le caractère. Or rien ne garantis que T est remplie de 0 au départ, donc des caractères après peuvent être comptés par erreur.
Ajoute un
elseet un
breakpour casser la boucle si le caractère est 0:
for (i=0;i<100;i+=1) if (T[i] != 0) t=t+1; else break;
from human import idiocy
del idiocy
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
12 janv. 2015 à 23:00
12 janv. 2015 à 23:00
2 remarques en plus de ce que gravgun a dit :
1/ N'oublie pas de mettre un '\n' à la fin de ton dernier printf().
2/ Plutôt que faire un for / if / else /break qui n'est pas super clean, je te conseille un :
Cdlt,
1/ N'oublie pas de mettre un '\n' à la fin de ton dernier printf().
2/ Plutôt que faire un for / if / else /break qui n'est pas super clean, je te conseille un :
i=0; while (T[i] != '\0') { i++; } return i;
Cdlt,
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 13/01/2015 à 10:33
Modifié par [Dal] le 13/01/2015 à 10:33
forest bien, il permet d'initialiser i à 0, de tester si T[i] est égal à '\0' et d'incrémenter i tant qu'il ne l'est pas, on peut donc faire :
for (i = 0; T[i]; i++) ; return i ;
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 janv. 2015 à 11:02
13 janv. 2015 à 11:02
Cela est une question de préférence. Pour ma part, dans ce genre de contexte, je préfère largement l'utilisation du while.
Mais mon message n'était pas contre l'utilisation de la boucle for, mais contre l'utilisation du break...
Mais mon message n'était pas contre l'utilisation de la boucle for, mais contre l'utilisation du break...
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
19 janv. 2015 à 15:22
19 janv. 2015 à 15:22
Oui, j'avais compris. Mon propos était d'attirer l'attention sur le fait que l'on peut exploiter ce que sait faire l'instruction
Je te rejoins sur le fait que
Dal
fordans les parenthèses, au point de pouvoir se passer d'accolades dans ce cas particulier. Ainsi, au final, l'algorithme que proposait de mettre gravgun dans les accolades peut se trouver seulement dans les parenthèses.
Je te rejoins sur le fait que
whileme vient aussi plus naturellement dans ces cas, et il a sans doutes une meilleure lisibilité.
Dal
12 janv. 2015 à 22:57
, qui créé un nouveau tableau inutilement,
Non, ça ne créé rien du tout puisque c'est en argument. Que tu mettes ici int T[100], int T[] ou int *T ne changera rien...
12 janv. 2015 à 22:58