Simplement lire une ligne en C
Fermé
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
-
15 juin 2009 à 15:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 juin 2009 à 21:55
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 juin 2009 à 21:55
A voir également:
- Simplement lire une ligne en C
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire epub - Guide
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne excel - Guide
10 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
15 juin 2009 à 21:40
15 juin 2009 à 21:40
Salut,
Pour lire une ligne bien précise, à toi de te faire la fonction.
Pour lire la 23è ligne, tu utilises une boucle pour compter le nombre de '\n' avec strchr et fgets() jusqu'à en compter 22. Tu seras alors au début de la 23è ligne.
Un exemple :
Pour lire une ligne bien précise, à toi de te faire la fonction.
Pour lire la 23è ligne, tu utilises une boucle pour compter le nombre de '\n' avec strchr et fgets() jusqu'à en compter 22. Tu seras alors au début de la 23è ligne.
Un exemple :
FILE *fp=fopen("chemin_fichier","r"); if(fp==NULL) { fputs("erreur à l'ouverture du fichier\n",stderr) exit(EXIT_FAILURE); } else { int cmpt=0; char buffer[255]; while(cmpt<12 && fgets(fp,buffer,sizeof buffer)!=NULL) if(strchr(buffer,'\n')!=NULL) cmpt++; //au début de la 13è ligne ... fclose(fp),fp=NULL; }
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
15 juin 2009 à 21:56
15 juin 2009 à 21:56
Vraiment merci je ne trouvais pas sérieusement parcontre j'aimerai un peu comprendre ces choses là que j'ai mis en gras
char buffer[255];
while(cmpt<12 && fgets(fp,buffer,sizeof buffer)!=NULL)
if(strchr(buffer,'\n')!=NULL) cmpt++;
Voilà si ca ne te dérange pas, j'ai fais du C en cour mais ya des trucs que l'on a jamais vu, j'ai quand même chercher pas mal de truc tout seul sur le site.
Merci
char buffer[255];
while(cmpt<12 && fgets(fp,buffer,sizeof buffer)!=NULL)
if(strchr(buffer,'\n')!=NULL) cmpt++;
Voilà si ca ne te dérange pas, j'ai fais du C en cour mais ya des trucs que l'on a jamais vu, j'ai quand même chercher pas mal de truc tout seul sur le site.
Merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
15 juin 2009 à 22:12
15 juin 2009 à 22:12
Ya pas de soucis, on est là pour expliquer ;-)
J'espère ne pas avoir été trop flou. Si t'as d'autres questions, n'hésite pas.
char buffer[255]; création d'un tableau de 255 char while(cmpt<12 && fgets(fp,buffer,sizeof buffer)!=NULL) fgets permet de lire le flux passé en premier paramètre ici le pointeur de fichier. Il lira 255 (sizeof buffer) caractères au maximum et le mettra à partir de l'adresse buffer (première adresse du tableau). Il faut toujours limiter en taille l'écriture dans un buffer sous risque de jolis segfaults. Le fgets renverra NULL lorsqu'il n'aura plus rien à lire. if(strchr(buffer,'\n')!=NULL) cmpt++; si le tableau buffer contient '\n' (saut de ligne) alors on est assuré d'avoir lu une ligne et dans ce cas là le compteur cmpt est incrémenté. Strchr renvoie un pointeur sur la première occurrence du caractère '\n' dans le buffer.
J'espère ne pas avoir été trop flou. Si t'as d'autres questions, n'hésite pas.
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
16 juin 2009 à 18:52
16 juin 2009 à 18:52
J'ai tester je n'y arriver pas j'ai bien mon fichier txt dans le C:\ et il rencontre un probleme.
Il n'y a pas de warning ni d'erreurs.
Il n'y a pas de warning ni d'erreurs.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
16 juin 2009 à 22:40
16 juin 2009 à 22:40
et il rencontre un probleme.
Lequel ?
Lequel ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
16 juin 2009 à 23:06
16 juin 2009 à 23:06
désolé mal exprimé: "le programme a recontrer un probleme et doit fermé" et cest tout il se ferme, alors que je n'ai ni de warnings ni d'erreurs :S
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
17 juin 2009 à 19:48
17 juin 2009 à 19:48
Fais moi un copier coller de ton code. N'oublie pas de te servir de la balise "code" située à droite de "souligné".
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
17 juin 2009 à 20:19
17 juin 2009 à 20:19
#include <stdio.h> #include <stdlib.h> void main() { int cmpt=0; char buffer[255]; system("cls"); FILE *fp=fopen("C:\questions.txt","r"); if(fp==NULL) { fputs("erreur a l'ouverture du fichier\n",stderr); exit(EXIT_FAILURE); } else { while(cmpt<3 && fgets(fp,buffer,sizeof buffer)!=NULL) { if(strchr(buffer,'\n')!=NULL) cmpt++; } } fclose(fp),fp=NULL; }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
17 juin 2009 à 21:55
17 juin 2009 à 21:55
void main()
Le bon prototype est : int main(void); (main renvoie un int).
Il faut aussi mettre return 0; avant l'accolade finale.
Et enfin l'erreur vient probablement de : FILE *fp=fopen("C:\questions.txt","r");
Si tu ne doubles pas l'antislash, le compilateur utilisera \q comme séquence d'échappement.
Correction : FILE *fp=fopen("C:\\questions.txt","r");
Cdlt
Le bon prototype est : int main(void); (main renvoie un int).
Il faut aussi mettre return 0; avant l'accolade finale.
Et enfin l'erreur vient probablement de : FILE *fp=fopen("C:\questions.txt","r");
Si tu ne doubles pas l'antislash, le compilateur utilisera \q comme séquence d'échappement.
Correction : FILE *fp=fopen("C:\\questions.txt","r");
Cdlt
> Impossible de trouver avec google
C'est une blague ?????
0.35 secondes pour trouver !!!!!!!!!!!
Grave...
C'est une blague ?????
0.35 secondes pour trouver !!!!!!!!!!!
Grave...
matthieu7666
Messages postés
6
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
17 juin 2009
15 juin 2009 à 19:46
15 juin 2009 à 19:46
Ca m'étonnerait que tu trouve pr une lire une seule ligne, t'a tapé quoi ?