PROBLEME pour retourner un char* a partir d'un fichier
kobee12
Messages postés153Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention31 octobre 2006
-
7 févr. 2003 à 18:16
swactix
Messages postés9Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention26 avril 2003
-
11 févr. 2003 à 22:01
Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.
Par exemple:
"fichier_langue.txt":
'a anglais
f francais...'
on passe f en argument et la fonction nous renvoie francais.
Mon probleme est au moment du renvoie de 'chaine' qui contient la chaine a renvoyer(ex:francais). Quand j'affiche a la fin de la fonction le contenu de 'chaine', la fonction m'indique bien "francais".Mais une fois retournee, quand je l'affiche dans le main(), ca ecrit n'importe quoi!!!
Si vous avez une solution, merci de m'en faire part car je deprime completement. Je suis a deux doigtsde balancer ma becanne contre un mur!
Merci d'avannce
kobee12
kobee12
Messages postés153Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention31 octobre 20061 7 févr. 2003 à 18:18
-------------------------------
Réponse au message :
-------------------------------
> Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.
>
> Par exemple:
> "fichier_langue.txt":
> 'a anglais
> f francais...'
>
> on passe f en argument et la fonction nous renvoie francais.
>
> Mon probleme est au moment du renvoie de 'chaine' qui contient la chaine a renvoyer(ex:francais). Quand j'affiche a la fin de la fonction le contenu de 'chaine', la fonction m'indique bien "francais".Mais une fois retournee, quand je l'affiche dans le main(), ca ecrit n'importe quoi!!!
>
> Si vous avez une solution, merci de m'en faire part car je deprime completement. Je suis a deux doigtsde balancer ma becanne contre un mur!
> Merci d'avannce
> kobee12
>
> char* ChoisirLangue(char langue)
> {
> char msg[30];
> char L;
> char *chaine;
> FILE * fic;
> char* nom = "fichier_langue.txt";
>
> /* Ouverture d'un fichier */
> fic = fopen(nom, "r");
> if (fic == NULL) {
> fprintf(stderr, "Error : %s %s\n", nom, strerror(errno));
> exit(-1);
> }
>
> rewind (fic); //repositionnement en debut de fichier
>
> do
> {
> fgets(msg, sizeof(msg), fic); //saisie de toute une ligne du fichier
> sscanf(msg,"%c %[^\n]%s\n", &L, chaine); decoupage de la ligne saisie
>
> if(L == langue)
> {
> fclose(fic);
> printf("chaine:%s %d.\n",chaine,strlen(chaine));
> return chaine; //pb:mauvais retour de chaine
> }
>
> }while(!feof(fic)); //retourne une valeur non nulle si en fin de fichier
> fclose(fic);
> return "0";
> }
swactix
Messages postés9Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention26 avril 2003 11 févr. 2003 à 22:01
je suis un jeune camerounais debutant ds c/c++
et je voudrais savoir quand ,comment ,utiliser les clés(if,else,char,float,...et tous les autres)
merci d'avance