Explication ligne de code en C
Nniinnaa
-
Manu -
Manu -
Bonjour,
je ne comprends pas comment fonctionne cette ligne de code .Quelqu'un pourrait-il m'aider
char * line[255];
...
while (fgets(line, sizeof line, fp), !feof(fp))
printf("%s", line);
ou fp est le pointeur de notre fichier.
J'aimerais savoir plus précisément, si lorsqu'on fait cette boucle while,comment sont stockés les caractères récupérés ligne par ligne dans line.Et pourquoi lorsqu'on tape printf("%s",line[0]),ça plante à l'exécution(ça compile).De plus,est-ce que cette boucle permet bien de récupérer toutes les lignes jusqu'à la fin du fichier ?
Merci.
je ne comprends pas comment fonctionne cette ligne de code .Quelqu'un pourrait-il m'aider
char * line[255];
...
while (fgets(line, sizeof line, fp), !feof(fp))
printf("%s", line);
ou fp est le pointeur de notre fichier.
J'aimerais savoir plus précisément, si lorsqu'on fait cette boucle while,comment sont stockés les caractères récupérés ligne par ligne dans line.Et pourquoi lorsqu'on tape printf("%s",line[0]),ça plante à l'exécution(ça compile).De plus,est-ce que cette boucle permet bien de récupérer toutes les lignes jusqu'à la fin du fichier ?
Merci.
A voir également:
- Explication ligne de code en C
- Code ascii - Guide
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
6 réponses
hello
ça c'est un tableau de 255 pointeurs de type char : char * line[255];
ca c'est un tableau de 255 élements de type char, un string : char line[255];
...
ça c'est un tableau de 255 pointeurs de type char : char * line[255];
ca c'est un tableau de 255 élements de type char, un string : char line[255];
...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Salut,
ça c'est un tableau de 255 pointeurs de type char : char * line[255];
Non, c'est un pointeur sur un tableau de 255 éléments. L'équivalent est char *(line[255])
Cdlt
Non !
#include <stdio.h>
main()
{
char line[255];
char *ptrs[255];
printf("sizeof(line) %d\n",sizeof(line));
printf("sizeof(ptrs) %d\n",sizeof(ptrs));
}
donne :
sizeof(line) 255
sizeof(ptrs) 1020
Jusqu'à nouvel ordre char *ptrs[255]; réserve 255 pointeurs, à l'analogue de (char*)ptrs[255];
Manu
Salut,
ça c'est un tableau de 255 pointeurs de type char : char * line[255];
Non, c'est un pointeur sur un tableau de 255 éléments. L'équivalent est char *(line[255])
Cdlt
Non !
#include <stdio.h>
main()
{
char line[255];
char *ptrs[255];
printf("sizeof(line) %d\n",sizeof(line));
printf("sizeof(ptrs) %d\n",sizeof(ptrs));
}
donne :
sizeof(line) 255
sizeof(ptrs) 1020
Jusqu'à nouvel ordre char *ptrs[255]; réserve 255 pointeurs, à l'analogue de (char*)ptrs[255];
Manu
Non.
T'as qu'à afficher le sizeof des deux dans ton programme. Et tu verras que c'est la même taille.
Par exemple :
Donc, char* ptrs[255] est analogue à char *(ptrs[255]) et non à char (*ptrs)[255]
T'as qu'à afficher le sizeof des deux dans ton programme. Et tu verras que c'est la même taille.
Par exemple :
#include <stdio.h> int main(void){ char *ptrs1[255]; char *(ptrs2[255]); char (*ptrs3)[255]; printf("sizeof(ptrs1) %d\n",sizeof(ptrs1)); printf("sizeof(ptrs2) %d\n",sizeof(ptrs2)); printf("sizeof(ptrs3) %d\n",sizeof(ptrs3)); return 0; } Execution : sizeof(ptrs1) 1020 sizeof(ptrs2) 1020 sizeof(ptrs3) 4
Donc, char* ptrs[255] est analogue à char *(ptrs[255]) et non à char (*ptrs)[255]