BOnjour je dois développer une application en, mais j'ai un probleme avec le resultat d'une fonction que j'ai crée.
C'est uen fonction qui va lire dans un fichier et qui me renvoie la valeur que je désire. Voici la fonction :
Mon probleme se siture au niveau du string result. Voici ce qu je recois quand j'envoie dans l'ordre :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 char recherche(char *ar1, int ar3) { int i=0,j=0,k=0,l=0; FILE *INFILE; char NOM_PERS[255]; do { INFILE = fopen("powerdale.xml", "r"); if (!INFILE) puts("erreur d ouverture"); } while (!INFILE); while (!feof(INFILE)) { fscanf(INFILE, "%s\n", NOM_PERS); if (l<ar3) { /* for (i=0;i<strlen(ar1);i++) { if (NOM_PERS[i]==ar1[i]) { z++; } } if (z==strlen(ar1))*/ if (strncmp(ar1,NOM_PERS,strlen(ar1))==0) { j=(strlen(NOM_PERS)-(strlen(ar1)+1)); k=strlen(ar1); for (i=k;i<j;i++) { result[i-k]=NOM_PERS[i]; } l++; } } } /* Fermeture des fichiers */ i = fclose(INFILE); if (i!=0) puts("erreurs fermeture"); return *result; }
result vaut 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strcpy(temp1,"<etat>"); recherche(temp1,j);
result vaut 10000
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strcpy(temp1, "<consobase>"); recherche(temp1,1);
result vaut 00000
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strcpy(temp1,"<etat>"); recherche(temp1,j);
Lors du premier passage et du 3 ème j'entre de la même facon mais il ne me renvoie pas la même chose. Cela est du au fait que le result n° vaut 10000 et il va seulement modifier le premier bit quand il passe pour la 3ème fois.
Comment puis je faire pour qu'il ne me renvoi que 0 au 3ème passage. Il faut sans doute coupe le string apres le premier bit mais je vois pas comment faire
Merci d'avance
Partager