Simplement lire une ligne en C
matthieu7666
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je voudrais juste vous demander votre aide pour juste lire une seule ligne (exemple la 23) et l'afficher en language C.
Impossible de trouver avec google souvent c'est juste lire tout le programme ou alors ya 50 000lignes lol
Voilà j'espère avoir tout dit vu que c'est court lol, merci à tous
Impossible de trouver avec google souvent c'est juste lire tout le programme ou alors ya 50 000lignes lol
Voilà j'espère avoir tout dit vu que c'est court lol, merci à tous
A voir également:
- Simplement lire une ligne en C
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Partager photos en ligne - Guide
- Lire epub - Guide
- Mètre en ligne - Guide
- Lire fichier bin - Guide
10 réponses
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; }
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Fais moi un copier coller de ton code. N'oublie pas de te servir de la balise "code" située à droite de "souligné".
#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; }
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