Bonsoir !

Voici mon problème: on se donne un fichier que je vous écris ci dessous :

1
7
1 3 5 8 6 7 4 3 2 1 9 6 4 3 6 2
+*++**-///*-/-+-*-*++++-
2
20
J'aimerais transformer ce fichier texte en une unique chaîne de caractère et pour cela j'ai écris cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void all_in_one(int max_line, char *buffer,FILE* f){
    char *chaine=malloc(sizeof(char)*max_line);
    for(int i=0,n=0;i<6;i++){
        fgets(chaine,max_line,f);
        sprintf(buffer+n,"%s\0",chaine);
        n=n+strlen(chaine);
    }
    fseek(f, 0, SEEK_SET);
    free(chaine);
    return;
}
Sauf que lorsque je lance valgrind, j'obtiens ==103== Invalid write of size 1, j'avais essayé avec la fonction strcat mais j'ai une erreur du même registre...

Quand j'essaye de cibler mon problème en ne récupérant qu'une ligne particulière j'ai exactement le même soucis Invalid write of size 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void give_me_operator(FILE* f,int max_line,char *p){
    char chaine[max_line];
    for(int i=0;i<4;i++){
        fgets(chaine, max_line, f);
    }
    fseek(f, 0, SEEK_SET);
    strcpy(p, chaine);
    return;
}
Je m'en remets à vous, merci d'avoir pris le temps de me lire !