[C++] Getline : comment récupérer ligne n°x ?
Résolu/Fermé5 réponses
Bonjour Lami20j. ;-)
Désolé de répondre aussi tardivement, j'ai eu un peu de mal à adapter le code en C++
Le fichier test.txt n'a pas été modifié.
Voici la nouvelle version du fichier test.cpp :
Merci beaucoup de m'avoir répondu ! :-)
Cordialement.
L'Ours Paddington Brown.
Désolé de répondre aussi tardivement, j'ai eu un peu de mal à adapter le code en C++
Le fichier test.txt n'a pas été modifié.
Voici la nouvelle version du fichier test.cpp :
#include <fstream> #include <iostream> #include <set> #include <string> int main() { std::ifstream fe("test.txt"); std::string s; int i; int j = 0; std::cout << "Quel numero de ligne ? "; std::cin >> i; if (i < 0 || i > 20) { std::cout << "Numero de ligne inexistant" << std::endl; system("Pause"); return 1; } while(j < i) { getline(fe, s); j++; } std::cout << s << std::endl; system("Pause"); return 0; }
Merci beaucoup de m'avoir répondu ! :-)
Cordialement.
L'Ours Paddington Brown.
Ah, j'ai réussi à créer une variante de ce programme. :-)
Il affiche un mot au hasard parmi une liste de 20 mots inscrits dans un fichier "test.txt".
Je laisse le code source ici pour celles et ceux que ça intéresse.
Encore merci à toi, Lami20j, d'avoir répondu à mon appel à l'aide. :-)
Amicalement.
L'Ours Paddington Brown.
Il affiche un mot au hasard parmi une liste de 20 mots inscrits dans un fichier "test.txt".
Je laisse le code source ici pour celles et ceux que ça intéresse.
#include <fstream> #include <string> #include <iostream> #include <set> int main() { srand(time(NULL)); std::ifstream fe("test.txt"); std::string s; int i = (rand() % 21); /* La commande ci-dessus affecte la variable i d'un entier compris entre 0 et 20. */ /* Vous pouvez modifier la valeur selon le nombre de mots présents dans votre liste. */ int j = 0; while(j < i) { getline(fe, s); j++; } std::cout << s << std::endl << std::endl; system("Pause"); return 0; }
Encore merci à toi, Lami20j, d'avoir répondu à mon appel à l'aide. :-)
Amicalement.
L'Ours Paddington Brown.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 janv. 2009 à 13:31
25 janv. 2009 à 13:31
Salut,
Voici un exemple en C
Voici un exemple en C
lami20j@debian:~/trash$ cat fic.txt ABATTRE ABORDER ACACIAS ACIDITE AJOUTER AMPOULE lami20j@debian:~/trash$ cat ccm41_fgets.c #include<stdio.h> int main() { FILE *F; char s[50]; if(NULL==(F=fopen("fic.txt","rb"))) return 1; /* lecture de fichier */ while(fgets(s,50,F)!=NULL) if(strcmp(s,"ACIDITE\n")==0) printf("%s",s); return 0; } lami20j@debian:~/trash$ gcc ccm41_fgets.c lami20j@debian:~/trash$ ./a.out ACIDITE
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 janv. 2009 à 13:47
25 janv. 2009 à 13:47
Re,
Ou avec le numéro de ligne (Tu n'as qu'à l'adapter pour c++)
Ou avec le numéro de ligne (Tu n'as qu'à l'adapter pour c++)
lami20j@debian:~/trash$ cat fic.txt ABATTRE ABORDER ACACIAS ACIDITE AJOUTER AMPOULE lami20j@debian:~/trash$ cat ccm42_fgets.c #include<stdio.h> int main() { FILE *F; char s[50]; int i=0; if(NULL==(F=fopen("fic.txt","r"))) return 1; /* lecture de fichier */ while(fgets(s,50,F)!=NULL) if(i++ == 3) printf("%s",s); return 0; } lami20j@debian:~/trash$ gcc ccm42_fgets.c lami20j@debian:~/trash$ ./a.out ACIDITE
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 janv. 2009 à 17:35
25 janv. 2009 à 17:35
Salut,
Merci d'avoir partager la solution ;-)
Bonne continuation.
Merci d'avoir partager la solution ;-)
Bonne continuation.
25 janv. 2009 à 15:58
Le fichier test.txt a bien été modifié, il contient 20 mots.
C'est pour cela que j'ai ajouté le code suivant :
25 janv. 2009 à 16:13
Le plus important c'est que tu as réussi résoudre ton souci ;-)
25 avril 2012 à 19:00
Longtemps aprés je tombre sur ce poste intéréssant !
Je me demande pouvons nous faire la mm chose en C ?
Merci !