Bonjour,
J'essai de réalisé un petit pgm qui recherche un index (dans un fichier) correspondant à l'argument passé lors de l'exécution du pgm.
Pour trouver cet index, je compare l'argument avec une portion de string du fichier. Cependant lors de la comparaison par l'instruction if, celui-ci ne fonctionne jamais (pas dégalité trouvé), bien qu'a l'affichage de l'argument et du string il soient identiques.
j'ai testé
dans le premier cas la condition n'est jamais vrai, dans le second elle est toujours vrai.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if (argv[1] == pdeb) { ---- } /* est egalement */ if (argv[1] = pdeb) { ---- }
exemple du fichier
exemple d'un argument
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 6360144 MZ01MA0 29981132 KS01MCO 38204659 A213MA0 79362290 OZ01MCO
J'avoue ne pas comprendre pourquoi cela ne fonction pas, est'il possible de comparer des chaines string avec l'instruction if ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MZ01MA0
voici mon code
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
49 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> int main(int argc, char *argv[]) { int rec = 0; /*compteur de reccord */ int c = 0; /*compteur */ int LenI = 0; /* taille de l'enreg */ int LenC = 0; /* taille des parametres*/ int Len = 0; /* taille de l'index */ char *pdeb = NULL; /* pointeur */ char LPARCPC[20]=""; /* nom LPAR + CPC */ char RECINDX[85] = ""; /* enreg du fichier */ char INDEX[20] = ""; /* INDEX de la MIB */ FILE *findx; /* pointeur pour fichier parametre */ findx = fopen("dd:SYSMIB","r"); /* ouverture du fichier */ if (findx != NULL) /* test ouverture */ { printf(" argv[1] :%s\n",argv[1]); while(fgets(RECINDX,80,findx) != NULL) /* lit le fichier*/ { c = 0; /* init du compteur */ pdeb = strchr(RECINDX,' '); /*recherche LPARCPC */ char *cn = strchr(pdeb,'\n'); /*recherche '\n' */ if ( cn != NULL) { *cn = '\0'; } pdeb = pdeb+1; /* avance d'un carctere pour eviter espace*/ printf(" LPAR CPC :%s\n",pdeb); if (argv[1] == pdeb) { printf(" coucou \n "); LenI = strlen(RECINDX); /* taille du reccord */ LenC = strlen(pdeb); /* taille LPARCPC */ Len = LenI - LenC; /* taille de l'index */ printf(" rec : %s\n",RECINDX); for (c=0;c<Len;c++) { INDEX[c] = RECINDX[c]; /* constitution de lindex */ } printf("INDEX : %s\n",INDEX); } /* fin du if argv[1] */ } } return(0); } /* fin du main*/
Partager