Recuperer un seul mot dans un fichier C
Résolu/Fermé
kushyyy
-
24 avril 2009 à 11:41
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 24 avril 2009 à 19:22
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 24 avril 2009 à 19:22
A voir également:
- Recuperer un seul mot dans un fichier C
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Ouvrir un fichier .bin - Guide
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 avril 2009 à 11:51
24 avril 2009 à 11:51
Salut,
if(caractereActuel!='32')
Ce n'est pas la bonne syntaxe. Soit tu mets 32 (sans apostrophes) ou alors tu mets ' ' (espace entre apostrophes).
De plus, tu te compliques la vie.
Pour récupérer le premier mot :
if(scanf("%6s",premierMot)==1) { //lecture correcte
if(caractereActuel!='32')
Ce n'est pas la bonne syntaxe. Soit tu mets 32 (sans apostrophes) ou alors tu mets ' ' (espace entre apostrophes).
De plus, tu te compliques la vie.
Pour récupérer le premier mot :
if(scanf("%6s",premierMot)==1) { //lecture correcte
merci pour ta reponse, mais le soucis, c'est que je ne sais pas combien de caracteres fait le premier mot, je veux le prendre pour le mettre dans une chaine de caracteres qui fait exactement ce nombre de caracteres.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 avril 2009 à 12:27
24 avril 2009 à 12:27
Voici un code qui réalise ce que tu veux suivant l'approche 2 de loupius mais je n'ai pas testé.
char *premierMot; size_t compt=0; int car; while((car=fgetc(fichier))!=' ' && car!='\n') compt++; premierMot=malloc(compt+1); if(premierMot !=NULL) { rewind(fichier); if(scanf("%s",premierMot) == 1) { //ici tu as premierMot qui contient le premier Mot avec juste la taille nécessaire et suffisante. } } //bla bla //on désalloue free(premierMot),premierMot=NULL;
merci pour ta reponse,
mais le soucis, c'est que ca me donner le premier mot de ce que je tape dans la console, pas de ce qu'il y'a dans mon fichier, je lire le fichier en entier et le mettre dans ma chaine de caractere?
mais le soucis, c'est que ca me donner le premier mot de ce que je tape dans la console, pas de ce qu'il y'a dans mon fichier, je lire le fichier en entier et le mettre dans ma chaine de caractere?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 avril 2009 à 14:19
24 avril 2009 à 14:19
Normal, je n'ai pas testé, et j'ai fait une boulette ^^.
Remplace le scanf("%s",premierMot), par :fscanf(fichier,"%s",premierMot)
Cela devrait mieux marcher.
Remplace le scanf("%s",premierMot), par :fscanf(fichier,"%s",premierMot)
Cela devrait mieux marcher.
kushyyy
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
24 avril 2009 à 14:21
24 avril 2009 à 14:21
merci beaucoup, tu me sauve la vie :D
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
kushyyy
24 avril 2009 à 19:22
24 avril 2009 à 19:22
Ca sera plus compliqué dans ce cas. Le rewind() permet de retourner au début.
Il faudrait fgetpos et fsetpos pour pouvoir respectivement mémoriser le pointeur après lecture du premier mot et le remettre en place après dénombrement du nombre de lettres du second.
Une alternative intéressante serait l'utilisation conjointe de fgets et de strtok.
Cdlt
Il faudrait fgetpos et fsetpos pour pouvoir respectivement mémoriser le pointeur après lecture du premier mot et le remettre en place après dénombrement du nombre de lettres du second.
Une alternative intéressante serait l'utilisation conjointe de fgets et de strtok.
Cdlt