Etude d'une fonction en C / tableau de caract
johan
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir , voici une petite fonction en C qui lit une chaine dans s et qui retourne sa valeur :
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; } alors dites moi si ma traduction de cette fonction est bonne : le prototype de cette fonction prend 2 arguments , un tableau de caractère en entrée , et un entier en sortie , et cette fonction communique grâce à ces 2 arguments avec les autres fonctions . la variable i est le compteur qui compte les caractères dans le tableau , et la variable c c'est celle qui lit la valeur dans les cases du tableau de caractères . en français la fonction donne : Pour i qui vaut 0 , i infénieur à lim - 1 ( là je sais pas on met çà ) , et c qui est différent de EOF , et c différent d'un passage à la ligne , on incrémente i ) chaque case du tableau contiendra une valeur retournée dans la variable c si la variable contient un passage à la ligne , on reboucle , et si une case du tableau vaut 0 , on retourne la longueur du tableau . si quelqu'un pourrait commenter mon commentaire , çà m'aiderait un peu , merci . PS : le lim - 1 j'ai du mal à comprendre à quoi il sert dans la boucle , pq i devrait etre infénieur à lim - 1 ...
A voir également:
- Etude d'une fonction en C / tableau de caract
- Tableau word - Guide
- Fonction si et - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
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?
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....