Salut a tous !!
J'ai un p'tit bout de code qu'est récalcitrant, j'arrive pas a comprendre ce qui se passe mal !!
En gros le programme comprends une fonction qui lit un fichier XML a la recherche de balise <a> et <b> (1 seule occurrence de chaque balise et <a> est avant <b> ) : les arguments de cette fonction sont le fichier a lire, les adresse des chaines contenant respectivement la balise A et celle contenant la balise B...
Voici le fichier que je veux lire :
Code :
- Ceci est le fichier a lire
- <a>aze</a>
- <toto>titi</toto>
- <b>qsd</b>
- <c>vbn</c>
|
Le pb est que, en sortie de ma fonction de lecture, j'ai bien mes 2 balises, mais dans le main, ou l'appel à la fonction est fait, il manque la balise <a> !
Il me manque aussi pas mal de cheveux
Voila le source et le résultat de l'exec : si qqn a une idée, je lui en serais très reconnaissant !!
Code :
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- FILE *p;
- char lire_car() {
- return(fgetc(p));
- }
- void trouve_balise(char *file, char **balise_a, char **balise_b) {
- char car;
- char a[20];
- char b[20];
- p = fopen(file,"r" );
- if (p != NULL) {
- car = lire_car();
- while (car != EOF) {
- if (car == '<') {
- car = lire_car();
- if (car == 'a') {
- car = lire_car();
- if (car == '>') {
- car = lire_car();
- int i = 0;
- while (car != '<') {
- a[i++] = car;
- car = lire_car();
- }
- a[i] = '\0';
- }
- }
- if (car == 'b') {
- car = lire_car();
- if (car == '>') {
- car = lire_car();
- int j = 0;
- while (car != '<') {
- b[j++] = car;
- car = lire_car();
- }
- b[j] = '\0';
- }
- }
- }
- car = lire_car();
- }
- }
- *balise_a=a;
- *balise_b=b;
- printf("fonction :\n<a> contient %s.\n<b> contient %s.\n",*balise_a,*balise_b);
- }
- int main(int argc, char **argv) {
- char *A = NULL;
- char *B = NULL;
- trouve_balise("aze.txt",&A,&B);
- printf("main :\n<a> contient %s.\n<b> contient %s.\n",A,B);
- exit(0);
- }
|
Resultat : a est vide dans le main ! comprends pas
Code :
- fonction :
- <a> contient aze.
- <b> contient qsd.
- main :
- <a> contient .
- <b> contient qsd.
|
Merci d'avance !!
Message édité par garoju le 23-06-2010 à 09:37:47
---------------
>>feed-back<< >>a vendre<<