+100 pour ne pas utiliser gets. Ca devrait être puni par la loi 
Le fait d'être constant est obligatoire en l'état actuel de la norme du C.
Ce n'est plus vrai depuis le C99 et les VLA (Variable Length Arrays).
Tu as voulu écrire :
char chaine[CHAINE_MAX] ;
je pense 
Pas d'accord. En fait, c'est effectivement mieux de faire ça :
char chaine[CHAINE_MAX] = {0};
Ainsi, tous les éléments vont être initialisés à 0. Et donc quelque soit la chaine qui sera écrite dedans, on aura un \0 derrière (sauf si bien sûr, on va jusqu'à écrasé le dernier élément du tableau. Dans ton code, seul le premier est à \0. Pas très utile. A la limite, écrire \0 sur le dernier élément du tableau, mais tant qu'à fait, tout initialiser à zéro.
Un code exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int main(int argc, char *argv[])
{
int tableau[150];
for(int i=0; i<150; printf("%d ", tableau[i++]) )
;
puts("\n\n");
int tableau_2[150] = {0};
for(int i=0; i<150; printf("%d ", tableau_2[i++]) )
;
return 0;
} |
En général, le paramètre entier est utilisé pour indiquer la taille du tableau passé en paramètre, qu'il est impossible de connaitre autrement.
Dans ton cas, c'est un pointeur pour pouvoir le modifier, mais il doit/devrait être utiliser pour empêcher de lire en dehors du tableau de char(acters).
ici, l'initialisation du pointé (longueur) devrait être la valeur 1000 (taille du tableau)
C'est une fonction strlen, on ne va pas lui passer la taille en paramètre non plus ^^ La fonction s'arrête quand elle rencontre une valeur particulière, \0 pour les chaines de caractères.
Je ne vois pas ce que le paramètre longueurMax vient faire là. Strlen n'en prend pas, ça n'a rien à faire ici. Ce qu'il faut revoir, c'est la manière de gérer la chaine dans le main éventuellement, pas dans la fonction.
Pourquoi ++i est préférable à i++ en C++ ?
++i renvoie une référence sur i, i++ non. Mais je ne connais pas l'intérêt pour ce genre de boucle.
Partager