Retourner une chaine a une fonction C
Je relance une question que j'ai posé il ya un ptit moment
j'aimerai renvoyer une chaine de caractere a ma fct.
Le but est que je dois lire un fichier.txt pour recuperer ma chaine de caractere, la ligne de lecture sera un parametre a ma fonction est ensuite je souhaie renvoyer cette chaine de caractere a l'aide d'un pointeur.
Sur un autre fichier j'utilise cette fonction et je fais un printf pour voir si j'ai bien recuperer ma chaine mais la j'obtient pas la chaine :cfou:
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
|
///------ fonction recuperation de la chaine-----////
char *p_ret=NULL; //variable globale
char* fichier_txt(int j)
{
FILE *fichier;
int cpt = 0; // on initialise le compteur sur la premiere ligne
char chaine[100]= ""; // On utilise une chaîne pour placer la data récuperer
p_ret =malloc(sizeof(char) * 100);
if (p_ret == NULL) // Si l'allocation a échoué
{
printf("il ya un soucis d'allocation memoire\n"); // On arrête immédiatement le programme
}
else
{
fichier = fopen("fichier_data.txt","r"); // Ouverture du fichier en lecture
if (fichier != NULL) // Test d'ouverture
{
while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // On fait une boucle while pour
{ // chercher la ligne que l'on veut lire
p_ret=fgets(chaine, TAILLE_MAX, fichier);
cpt=++cpt; // Attention ici on doit d'abord effectuer l'incrementation
//printf("on va entrer ds la boucle if pour la %d fois\n",cpt);
if(cpt==j) // Ici on choisit la ligne à récupérer
{
printf("la chaine de caractere est donc %s\n",chaine);
return p_ret;
}
else
return 0;
}
}
else
printf("Impossible d'ouvrir le fichier fichier_data.txt");
}
}
///---------Main------------//
int main(void)
{
char*result =NULL;
int ligne7=7;
char chaine[50]= "";
int i=0;
result= fichier_txt(ligne7);
chaine[50]=*result;
printf("la chaine est donc : %s\n",&result);
system("PAUSE");
free(p_ret);
return 0;
} |
je n'arrive pas a recuperer ma chaine de caratere ???
doncSi vous avez une petite idée pour pouvoir recuperer la chaine retourner et pouvoir l'afficher ..
Merci