Bonjour,
j'ai besoin d'aide les amis je veux lire un paragraphe à partir d'un fichier et le stocker dans une liste chaîne .le problème c'est que la lecture s’arrête au premier espace aidez-moi SVP
Version imprimable
Bonjour,
j'ai besoin d'aide les amis je veux lire un paragraphe à partir d'un fichier et le stocker dans une liste chaîne .le problème c'est que la lecture s’arrête au premier espace aidez-moi SVP
Montre ton code qui pose problème et on pourra t'aider.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 typedef struct para{ char titp[30]; char p[2000]; struct para *next; }para; typedef struct title{ char titre[30]; para *list_para; struct title *next; }tit; tit *listc; char titp[30]; char nomp[30]; char pr[5]; char bg[30]; void remplir(){ listc=NULL; tit *p=NULL; para *pr; char *nomf = "f.txt"; FILE *f; f = fopen(nomf,"r"); if(!f) printf("Erreur !!"); char c; int t=0; do { if(t!=1) fscanf(f,"%c ",&c); p = (tit*)malloc(sizeof(tit)); fscanf(f,"%s\n",p->titre); do { fscanf(f,"%c ",&c); if(c=='p') { pr = (para*)malloc(sizeof(para)); fscanf(f," %s %s\n",pr->titp,pr->p); printf("%s",pr->p); pr->next = p->list_para; p->list_para = pr; } else t=1; }while((c=='p')&&(!feof(f))); p->next = listc; listc = p; }while(!feof(f)); fclose(f); }
le ficher f.txt est organiser de la façon suivante
t informatique
p langage_c le jdejfjdfkdf hshddklldm skskdskhfs lksjdjsjds nnhsfhhd
....
le titre j'arrive à le lire (langage_c) il n'est pas separer par des espaces mais le paragraphe s’arrête au premier mot jdejfjdfkdf comment faire SVP
Salut,
ton code est vraiment illisible, pense à nommer bien tes variables avec des noms significatifs, faire des indentations et évite l'utilisation des variables globales, parce que c'est difficile de localiser l'erreur dans un code comme le tien.:arf:
Je signale tout de même que le primo-postant avait initialement déposé son code sans les balises CODE et que, même si en principe vBulletin conserve dans ses bases le message tel qu'il a été saisi, il est possible que les indentations aient été oblitérées par l'opération du copier-coller.
Voici le code formaté de manière lisible ;)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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 typedef struct para { char titp[30]; char p[2000]; struct para *next; } para; typedef struct title { char titre[30]; para *list_para; struct title *next; } tit; tit *listc; char titp[30]; char nomp[30]; char pr[5]; char bg[30]; void remplir() { listc=NULL; tit *p=NULL; para *pr; char *nomf = "f.txt"; FILE *f; f = fopen(nomf,"r"); if(!f) printf("Erreur !!"); char c; int t=0; do { if(t!=1) fscanf(f,"%c ",&c); p = (tit*)malloc(sizeof(tit)); fscanf(f,"%s\n",p->titre); do { fscanf(f,"%c ",&c); if(c=='p') { pr = (para*)malloc(sizeof(para)); fscanf(f," %s %s\n",pr->titp,pr->p); printf("%s",pr->p); pr->next = p->list_para; p->list_para = pr; } else t=1; } while((c=='p')&&(!feof(f))); p->next = listc; listc = p; } while(!feof(f)); fclose(f); }
Je l'ai lu en diagonale mais :
- feof() ne s'utilise pas ainsi : http://c.developpez.com/faq/?page=es_general#ES_feof
- fopen() : mieux vaut vérifier l'ouverture du fichier
- scanf() avec un formateur %s s'arrête dés qu'il rencontre un caractère blanc, tel qu'une espace...