Bonjour à tous,
Sur VC++, j'essaie de programmer un petit programme permettant de lire caractère par caractère une chaîne contenue dans un fichier texte, en C.
Or le programme lit bien la chaîne en question, mais ajoute systématiquement des caractères bizarres à la fin de la chaîne lue. Est-ce que quelqu'un comprend pourquoi ?
La variable taille_fichier est bien initialisée avec le nombre d'octets du fichier, qui correspond bien au nombre de caractères de la chaîne à afficher...
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
27
28
29
30
31
32 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { FILE * f_out; WIN32_FILE_ATTRIBUTE_DATA attr ; int i = 0 ; int taille_fichier = 0 ; char ch = ' ' ; char* szBuffer ; f_out = fopen("Test.txt","r") ; GetFileAttributesEx("Test.txt", GetFileExInfoStandard, &attr) ; taille_fichier = attr.nFileSizeLow ; szBuffer = (char *)calloc(taille_fichier, sizeof(char)) ; fseek(f_out, SEEK_SET, 0) ; for (i = 0 ; i < taille_fichier ; i++) { ch = fgetc(f_out); szBuffer[i] = (char)ch; } fclose(f_out) ; MessageBox(NULL, szBuffer, "Test Lecture", MB_OK) ; free(szBuffer) ; return 0 ; }
Alors pourquoi cet ajout de caractères bizarres à la fin de szBuffer ??? Et comment y remédier ?
Partager