Stoqué un fichier dans une chaine C

koukoukhaoula Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   -
salut tout le monde,
je souhaite lire un fichier avec C et stoquer son contenu dans une variable de type char*:


int fonction(char *chemin)
{
char *res=(char *)malloc((strlen(res)+1) *sizeof(char));/*la chaine danslaquelle je stoque le contenu du fichier*/
char *ch=(char *)malloc((strlen(ch)+1) *sizeof(char));
ch[0]='\0';
char *ChercheUs=" MaCondition";


FILE *fic;

char ligne_lue[512];
char *recherche1;
fic = fopen(chemin, "r"); // ouvrir en lecture	
while(fgets(ligne_lue, 512, fic) != NULL)
{
      recherche1=strstr(ligne_lue,"var");
      if(!recherche1)
      {
        
        res=strcat(ch,ligne_lue);
         res=strcat(res,"\n");
		

      }
    else
      {
	 
        res=strcat(ChercheUs,res);
        
      }
}
printf("%s",res);

return 1;
}






A voir également:

4 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
et quelle est la question ?
0
koukoukhaoula Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai problème lor de l'execution.je c pas comment se procédé
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ok, déjà au début, lors de tes allocations mémoire il y a un problème :

char *res=(char *)malloc((strlen(res)+1)

le problème, c'est que res vient d'être crée, il a donc une longueur indéterminée, il ne faut pas appeler strlen dessus.

il te allouer la mémoire pour une chaine une fois que tu connais sa taille.

il y a plusieurs problèmes :

1) tu ne connais pas la taille de ton fichier au début. tu dois donc allouer assez de place pour mettre ce que tu lis (par tranche de 512 apparemment), puis utiliser ralloc pour réallouer de l'espace supplémentaire si tu n'as pas fini

2)es-tu sûr que dans ton fichier il n'y a pas de caractère nul ('\0') ?
car si oui tu seras incapable de lire la totalité de ton fichier dans ta chaine.
0
koukoukhaoula Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
c'est un fichier .js
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
c'est-à-dire ? un fichier avec du texte ou des lignes de code ? Dans ce cas c'est ok pour le deuxième problème.

mais il faut que tu corriges ton allocation de mémoire.
0