Moi j'utiliserais fgets, et je virerais les \r et \n éventuels.
Comme ça, tu es certain d'avoir toujours la même chose.
Version imprimable
Moi j'utiliserais fgets, et je virerais les \r et \n éventuels.
Comme ça, tu es certain d'avoir toujours la même chose.
Personellement, j'utiliserais fgets comme suit:
Et la fonction PurgeFile:Code:
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 #include <stdio.h> #include <stdlib.h> #define MAXLINE 100 #define MAXLENGTH 80 int main(int argc, char *argv[]) { char ligne[MAXLINE][MAXLENGTH]; int n = 0; FILE* fIn; if((fIn = fopen("texte.txt", "a+")) == NULL) { printf("Impossible de créer ou d'ouvrir le fichier\n"); system("PAUSE"); return -1; } while(fgets(ligne[n], sizeof(ligne[n]), fIn)) { PurgeFile(ligne[n], fIn); printf("Ligne %d : %s\n",n,ligne[n]); n++; } fclose(fIn); system("PAUSE"); return 0; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 static void PurgeFile (char *s, FILE *fp) { /* search ... */ char *p = strchr (s, '\n'); if (p != NULL) { /* ... and kill */ *p = 0; } else { /* Il reste des caractères à saisir dans la ligne car buffer de réception trop court -> soit j'ignore mais ces données seront récupérées au ^prochain fgets -> soit je récupère ces données, mais utilisation de tableau dynamique pour réaliser cela */ printf("Il reste des caractères dans la ligne à récupérer\n"); } }
A condition de gérer correctement le 0 final. Bien lire la doc de strncpy()...Citation:
Envoyé par zooro
Si l'ouverture s'est faite en mode texte ("r", "r+", "w+"), oui.Citation:
Envoyé par seriousme
Mais pour lire des lignes, on utilise fgets(), c'est fait pour...