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;
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;
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;
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
Partager