Etude d'une fonction en C / tableau de caract
Fermé
johan
-
7 déc. 2005 à 23:22
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 8 déc. 2005 à 18:43
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 8 déc. 2005 à 18:43
A voir également:
- Etude d'une fonction en C / tableau de caract
- Tableau croisé dynamique - Guide
- Fonction si et - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 déc. 2005 à 23:45
7 déc. 2005 à 23:45
Salut,
Rectification: cette fonction prend deux arguments en entrée:
s qui est un tableau de caractère, et lim qui est la limite du nombre de caractère qu'on veut lire à l'écran.
Sa valeur de retour c'est i (le nombre de caractères récupérés). Et il modifie en même temps le tableau s.
si la variable contient un passage à la ligne , on reboucle , et si une case du tableau vaut 0 , on retourne la longueur du tableau
Non, le bloc de la boucle se limite à s[i] = c;;
Et à la fin de la boucle, si c == '\n' alors bidule et ensuite s[i]='\0'
Ca vient du fait que celui qui a écris cette fonction est un barbare.
Il y a un truc qui est permi en c : si tu ne mets pas d'accolade après un for() alors seule la prochaine instruction sera évaluée à chaque passage de la boucle. La suite s'execute quand la boucle est finie.
Pour faire une traduction ça donnerait:
Rectification: cette fonction prend deux arguments en entrée:
s qui est un tableau de caractère, et lim qui est la limite du nombre de caractère qu'on veut lire à l'écran.
Sa valeur de retour c'est i (le nombre de caractères récupérés). Et il modifie en même temps le tableau s.
si la variable contient un passage à la ligne , on reboucle , et si une case du tableau vaut 0 , on retourne la longueur du tableau
Non, le bloc de la boucle se limite à s[i] = c;;
Et à la fin de la boucle, si c == '\n' alors bidule et ensuite s[i]='\0'
Ca vient du fait que celui qui a écris cette fonction est un barbare.
Il y a un truc qui est permi en c : si tu ne mets pas d'accolade après un for() alors seule la prochaine instruction sera évaluée à chaque passage de la boucle. La suite s'execute quand la boucle est finie.
Pour faire une traduction ça donnerait:
int lireligne(char s[], int lim) { int c, i; for ( i=0; i < lim - 1 && (c=getchar()) != EOF && c!='\n'; ++i) { s[i] = c; } if ( c == '\n' ) { s[i] = c; ++i; } s[i] = '\0'; return i; }
le mec qui a écrit cette fonction est denis ritchie , le créateur du langage C , en quoi c'est un barbare s'il te plait?
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
8 déc. 2005 à 07:25
8 déc. 2005 à 07:25
le mec qui a écrit cette fonction est denis ritchie
Ah zut :-D
En fait je dis ça parce que le c est un langage difficile à lire, et c'est dommage dans certains cas d'user de certaines syntaxes qui rendent le code encore plus difficile à lire.
Il vaut mieux utiliser
Plutôt que
Le deuxième peut prêter à confusion....
Ah zut :-D
En fait je dis ça parce que le c est un langage difficile à lire, et c'est dommage dans certains cas d'user de certaines syntaxes qui rendent le code encore plus difficile à lire.
Il vaut mieux utiliser
for (i=0;i<100;i=++) { Instruction 1; } Instruction 2;
Plutôt que
for (i=0;i<100;i=++) Instruction 1; Instruction 2;
Le deuxième peut prêter à confusion....
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
8 déc. 2005 à 18:43
8 déc. 2005 à 18:43
Oui je le fait aussi parfois. Mais à condition que l'instruction évaluée par la boucle soit bien indentée.
Généralement je le fais uniquement s'il n'y a pas d'instruction encore après. Barf chacun son truc, l'essentiel étant de s'arranger pour que ça reste lisible.
Généralement je le fais uniquement s'il n'y a pas d'instruction encore après. Barf chacun son truc, l'essentiel étant de s'arranger pour que ça reste lisible.