Langage C

aderiano Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
aderiano Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
SVP je veux savoir la fonction qui peut lire d'un fichier en tenant compte des espaces, je vais passer des informations d'un fichier vers une structure, j'ai utilisé la fonction sscanf mais lorsqu'elle trouve un espace elle affecte ce que le suit au champs suivant de la structure et ça fait un décalage de données dans la structure !!!
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Si j'ai bien compris ton problème, tu as besoin de fgets(). Ca prend tous les espaces jusqu'à la fin de la ligne tant que le nombre de caractères lus est inférieur à la taille du buffer.
0
aderiano Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci ,mais j'ai un fichier qui contient des lignes de données chaque ligne contient les informations suivante:
login mot de passe nom prenom email pseudo
certains champs contiennent des espaces exp: nom composé,
j'ai pris les ligne via fgets et je veux la décompose suivant le nombre de char de chaque champs la fonction que j'ai utilisé est:
liste *charge_user(liste *l)
{


cellule *ptc;
char s[111];

FILE *f;

f=fopen("user.txt","r");
l=(liste*)malloc(sizeof(liste));
l->ptd=NULL;
l->ptf=NULL;




while ( fgets(s,110,f))
{


ptc=(cellule*)malloc(sizeof(cellule));
ptc->pts=NULL;
ptc->ptp=NULL;

sscanf(s,"%20s %10s %20s %20s %30s %10s",ptc->login,ptc->mot_passe,ptc->nom,ptc->prenom,ptc->email,ptc->pseudo);


if(l->ptd==NULL)
{
l->ptd=ptc;
l->ptf=ptc;
}
else
{
l->ptf->pts=ptc;
ptc->ptp=l->ptf;
l->ptf=ptc;
}

};
return (l);
fclose (f);
}
si le nom est composé alors il affecte la deuxieme partie pour le champs suivant dans la structure
0