Salut, dans le cadre d'un mini projet je rencontre un soucis avec fscanf et l'écriture lecture fichier;

je m'explique;
1) j'encode mes éléments dans un tableau de structure
2)j'enregistre(dans un fichier texte) ces éléments qui sont contenu sous forme d'un tableau de structure à l'aide d'une boucle et de;


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
fprintf(fichier,"%-20s %-10.2f %-10d",alimentation[i].nom,alimentation[i].prix,alimentation[i].stock);
fprintf(fichier,"\n");
ce qui me donne par exemple dans mon fichier;



On peut voir que chaque nom a bien un nombre de digit égal a 20 et un alignement à gauche(%-20s)
ainsi que le prix et le stock on également un nombre de digit réservés correspondant à ceux que j'ai entrés dans la fonction fprint.

Jusque là pas de soucis.

Lorsque je désire récupérer ces données à l'aide d'un fscanf, je fais;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
fscanf(fichier,"%s %lf %d",alimentation[i].nom,&alimentation[i].prix,&alimentation[i].stock);
cette méthode marchera si les noms ne comporte pas d'espace, par contre lorsqu'il y a un espace entres les noms(ex;pomme rouge)ça ne va plus, j'ai essayé plusieurs méthodes tel que;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
fscanf(fichier,"%19[^\n] %lf %d",alimentation[i].nom,&alimentation[i].prix,&alimentation[i].stock);
.
.
.

Mais je rencontre toujours des soucis. :euh:

Je sais que la fonction fscanf et comme scanf et s’arrête au caractère d'espacement.

Je sais qu'on peut inclure ces caractères d'espacement+aussi définir combien de digit vont être lu mais je n'arrive pas à mettre cela en place car je ne comprends pas exactement comment procéder.

Sans oublier que dans mon fichier j'ai un caractère blanc("%-20s %-10.2f %-10d") qui n'est pas compris dans la chaine et qui est un séparateur entre le nom le prix et le stock.

Cela fait 2 jour que je cherche mais je n'ai pas trouvé la solution

merci