lecture de fichier avec sscanf - C - Programmation
Marsh Posté le 27-02-2006 à 16:25:47
sandra771 a écrit : Je voudrais lire les données d'un fichier comportant plusieurs lignes. |
Ce code est très incomplet (mais ces '&' sont très suspects !). Merci de poster un code complet et compilable réduit au minimum montrant le problème, avec un exemple de fichier de données.
On ne sait pas ce que tu ne sais pas.
Marsh Posté le 27-02-2006 à 16:57:34
En fait, le programme est assez conséquent!
J'ai essayé de garder l'essentiel, j'espère que ça suffira!
# include <stdio.h>
# define LONG 30
void main() {
static FILE *File = NULL;
/* soit un fichier comportant une seule ligne de code ASCII pour simplifier, soit la ligne suivante:
FREQUENCY POWER */
typedef struct {
UCHAR Freq;
UCHAR Puiss;
} MaStruct;
char ligne[LONG];
/* apres ouverture du fichier: */
while(fgets(ligne,LONG,File) != NULL) {
sscanf(ligne,"%9s %5s", &MaStruct.Freq, &MaStruct.Puiss);
printf("Freq vaut: %s et Puiss vaut: %s\n", &MaStruct.Freq, &MaStruct.Puiss);
}
}
Sandra
Marsh Posté le 27-02-2006 à 17:28:06
sandra771 a écrit : J'ai essayé de garder l'essentiel, j'espère que ça suffira! |
Tu as compilé ? Parce qu'il manque encore la moitié du code là. Et le fichier, il est ouvert comment ?
Ceci devrait fonctionner (pas pu le tester, le fichier ne s'ouvre pas pour une raison que j'ignore)
Code :
|
Marsh Posté le 28-02-2006 à 09:36:07
Ca y est, ça marche!
Merci beaucoup. Tu m'as vraiment débloqué. En fait, ce sont bien les & qui étaient en trop...
Marsh Posté le 27-02-2006 à 16:13:48
Bonjour,
Je voudrais lire les données d'un fichier comportant plusieurs lignes.
Par exemple, la première ligne comporte les données ASCII suivantes:
FREQUENCY POWER (etc...)
mon code est le suivant:
/* je parcours le fichier avec l instruction suivante:*/
while(fgets(ligne,LONG,File) != NULL) {
/* je veux lire par exemple les deux premiers mots FREQUENCY et POWER de la premiere ligne de mon fichier. Pour cela, je fais: */
sscanf(ligne,"%9s %5s", &Freq, &Puiss);
printf("Freq vaut: %s et Puiss vaut: %s\n",&Freq,&Puiss);
/* Freq est initialisé à: char *Freq='fffffffff'; par exemple et Puiss à: char *Puiss='ppppp'; */
Le résultat de mon printf apres execution me donne: Freq vaut: FREQPOWER et Puiss vaut: POWER!!
Je n'obtiens pas de que je veux et ne trouve pas d'où pourrait provenir mon erreur...
Auriez-vous une idée?
Merci d'avance!
Sandra