Langage C et problème d'espaces
Fab
-
toph Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
toph Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je réalise actuellement un logiciel en C.
Je fais mes maniupulations et les enregistrent dans un fichier texte.
Tous ce passe carrectement par contre quand je charge ce fichier au démarrage du logiciel, La prise en compte des espaces ne se fait plus. Par exemple, pour l'adresse postale d'une personne, les espaces entre les mots ne marche pas.
Voici le code :
void load(){
char c;
char nom[50];
char prenom[50];
char notel [11];
char adres [100];
char cp [6];
char ville [50];
FILE *fic;
struct person *ptemp;
struct person *pteur;
pteur = pointeur;
/* Ouverture du fichier*/
fic = fopen(nom_fich,"rt");
/* Mettre le pointeur à NULL*/
pointeur = NULL;
/* Tant que le fichier n'est pas EOF on met les données dans le pointeur*/
while ((fscanf(fic, "%s\t%s\t%s\t%s\t%s\t%s\n",nom,prenom,notel,adres,cp,ville)) != EOF){
ptemp = pointeur;
pointeur = malloc(sizeof(struct person));
strcpy(pointeur->nom, nom);
strcpy(pointeur->prenom, prenom);
strcpy(pointeur->notel, notel);
strcpy(pointeur->adres, adres);
strcpy(pointeur->cp, cp);
strcpy(pointeur->ville, ville);
pointeur->suivant = ptemp;
}
system("cls");
printf("\n\n\n\n ******************************************************\n");
printf(" * *\n");
printf(" * AGENDA 2002 *\n");
printf(" * *\n");
printf(" ******************************************************\n\n");
printf(" ------------------------------------------------------\n");
printf("\n Chargement effectue !");
c=getchar();
c=getchar();
system("cls");
/*Fermeture du fichier*/
fclose(fic);
}
Merci à tous ceux qui m'aideront !
Je réalise actuellement un logiciel en C.
Je fais mes maniupulations et les enregistrent dans un fichier texte.
Tous ce passe carrectement par contre quand je charge ce fichier au démarrage du logiciel, La prise en compte des espaces ne se fait plus. Par exemple, pour l'adresse postale d'une personne, les espaces entre les mots ne marche pas.
Voici le code :
void load(){
char c;
char nom[50];
char prenom[50];
char notel [11];
char adres [100];
char cp [6];
char ville [50];
FILE *fic;
struct person *ptemp;
struct person *pteur;
pteur = pointeur;
/* Ouverture du fichier*/
fic = fopen(nom_fich,"rt");
/* Mettre le pointeur à NULL*/
pointeur = NULL;
/* Tant que le fichier n'est pas EOF on met les données dans le pointeur*/
while ((fscanf(fic, "%s\t%s\t%s\t%s\t%s\t%s\n",nom,prenom,notel,adres,cp,ville)) != EOF){
ptemp = pointeur;
pointeur = malloc(sizeof(struct person));
strcpy(pointeur->nom, nom);
strcpy(pointeur->prenom, prenom);
strcpy(pointeur->notel, notel);
strcpy(pointeur->adres, adres);
strcpy(pointeur->cp, cp);
strcpy(pointeur->ville, ville);
pointeur->suivant = ptemp;
}
system("cls");
printf("\n\n\n\n ******************************************************\n");
printf(" * *\n");
printf(" * AGENDA 2002 *\n");
printf(" * *\n");
printf(" ******************************************************\n\n");
printf(" ------------------------------------------------------\n");
printf("\n Chargement effectue !");
c=getchar();
c=getchar();
system("cls");
/*Fermeture du fichier*/
fclose(fic);
}
Merci à tous ceux qui m'aideront !
A voir également:
- Langage C et problème d'espaces
- Langage ascii - Guide
- Espaces insécables - Guide
- Langage binaire - Guide
- Tapez cette phrase, en respectant bien les espaces et la ponctuation. - Guide
- Pascal langage - Télécharger - Édition & Programmation
2 réponses
Bon je ne parlerai pas de l'exemple de commentaire à ne pas mettre ;-)
C vrai que c un peu plus compliqué, mais c'est comme de faire :
if(x=1) //si x vaut 1
{
}
Pour ta réponse, c'est très simple => scanf (fscanf aussi donc : d'ailleurs question aux autres : scanf ne serait pas une macro utilisant fscanf avec stdin ?) s'arrête aux espaces...
Donc pour ton problème, moi je vois une solution => tu saisis la ligne complète avec fgets (soit dit en passant : utilisation de gets interdite ;-) ) qui te prendra les espaces, ensuite tu parcours la chaine pour en extraire les chaines "intertabulation"
@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
C vrai que c un peu plus compliqué, mais c'est comme de faire :
if(x=1) //si x vaut 1
{
}
Pour ta réponse, c'est très simple => scanf (fscanf aussi donc : d'ailleurs question aux autres : scanf ne serait pas une macro utilisant fscanf avec stdin ?) s'arrête aux espaces...
Donc pour ton problème, moi je vois une solution => tu saisis la ligne complète avec fgets (soit dit en passant : utilisation de gets interdite ;-) ) qui te prendra les espaces, ensuite tu parcours la chaine pour en extraire les chaines "intertabulation"
@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?