Bonsoir à tous,
Je ne comprends pas pourquoi le code suivant ne fonctionne pas:
J'obtiens l'alerte de compilation suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <stdio.h> main() { char td[300]; int nbc, nbt, i, j, k; char nomFichier[21]; FILE *fichier; printf("nom du fichier à lister : "); scanf("%20s", nomFichier); fichier = fopen(nomFichier, "r"); for (j = 0; j < 30; j++) { nbc = fread(td[j], sizeof(char), 30, fichier); nbt = nbc + nbt; } for (k = 0; k = nbt; k++) printf("%c", td[k]); printf("n"); fclose(fichier); }
warning: passing argument 1 of ‘fread’ makes pointer from integer without a cast
Et à l'exécution j'obtiens l'erreur suivante :
Segmentation fault: 11
Pourtant, lorsque je change le programme de la manière suivante :
ça fonctionne correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdio.h> main() { char td[300]; int nbc, nbt, i, j, k; char nomFichier[21]; FILE *fichier; printf("nom du fichier à lister : "); scanf("%20s", nomFichier); fichier = fopen(nomFichier, "r"); nbc = fread(td, sizeof(char), 30, fichier); for (i = 0; i < nbc; i++) printf("%c", td[i]); printf("n"); fclose(fichier); printf("%d", nbc); }
Donc pourquoi fread(td, sizeof(char), 30, fichier) ne renvoie pas d'erreur alors que fread(td[i], sizeof(char), 30, fichier) en renvoie une ?
Merci pour votre aide.
Partager