Tant que non fin de fichier

Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006 - 3 mai 2005 à 15:59
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006 - 3 mai 2005 à 18:44
Bitnik

Bonjour, je dois réaliser comme projet un petit questionnaire en console application qui consiste à créer des fichiers(fichiers questionnaires et fichiers réponses).mais je ne sais pas comment traduire le tant que non fin de fichier en c#.je veu qu'il lit une question a la fois (pour pouvoir faire une réponse a la fois)jusqu'à ce qu'il n'y a plus de questions mais je n'y arrive pas.avez-vous quelque chose à ma proposer ??

9 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
3 mai 2005 à 16:21
Salut,

Déjà tu utilises quoi pour effectuer la lecture du fichier ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
3 mai 2005 à 16:31
0
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
3 mai 2005 à 16:59
salut coq,voici mon code (en rouge se présente mon probleme) :

{
Console.WriteLine("Quel est le nom du fichier auquel vous voulez répondre ?");
nomfichier = Console.ReadLine();
FileInfo fi =
new FileInfo("Q"+nomfichier+".txt");

if (fi.Exists)
{
FileStream fs =
new FileStream("Q"+nomfichier+".txt", FileMode.Open);
StreamReader sr=
new StreamReader(fs);
FileStream fst =
new FileStream("R"+nomfichier+".txt",FileMode.OpenOrCreate);
StreamWriter sw =
new StreamWriter(fst);

c'est la que se trouve le probleme, je souhaiterai lui dire tan qu'il y a encor des question, il lit puis enregistre...
do
{
Console.WriteLine(sr.ReadLine());
Console.WriteLine("Entrez votre reponse :");
reponse = Console.ReadLine();
sw.WriteLine(reponse);
}
while(sr.ReadLine() !=
null);
sw.Close();
sr.Close();
System.Threading.Thread.Sleep(2000);
}
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
3 mai 2005 à 17:26
euh c'est justement ce que tu fais avec la ligne while(sr.ReadLine() != null); non ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
3 mai 2005 à 17:34
C'est aussi ce que je pensais mais quand j'execute mon programme, il lit la premiere question (normal g fé un "do", donc il doit au moins l'executer une fois),il me demande la reponse donc jusque la tout va bien mais ensuite au lieu de passer à la question 2, il met la 3 et me demande une rép, et après il ne m'affiche même pas de question mais me demande une réponse(pour simple information, j'ai mi 4 questions dan mon fichier).ya un truc ki méchappe, je sais pa pourquoi il lit pas tout normalement ??
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
3 mai 2005 à 17:42
Ah oui
Je n'ai pas fait attention au debut mais comme tu fais 2 ReadLine ça ne peut pas aller :

do
{
Console.WriteLine(sr.ReadLine()); => lecture d'une ligne
Console.WriteLine("Entrez votre reponse :");
reponse = Console.ReadLine();
sw.WriteLine(reponse);}while(sr.ReadLine() !null);> lecture d'une autre ligne (ce qui explique le "saut" de la 2eme ligne)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
3 mai 2005 à 17:54
A wé, pas bête !!
et dans ce cas la comment je pourra faire, parce que si je tire le Console.WriteLine(sr.ReadLine()); il n'affichera plus la question et si je le tire dans le while, j'aurai pas ma condition (tant que non fin de fichier) !

chui un peu pomé !
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
3 mai 2005 à 17:59
Passe par une variable locale de type string pour conserver le retour de la méthode ReadLine.
Ainsi tu pourras faire ton test et l'affichage sans probleme.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
3 mai 2005 à 18:44
Ah, j'ai enfin trouvé grace à tes conseils coq, jte remercie bocoup !
Merci aussi à toi Bidou !
jvous file le code au cas ou ça vous interesse :

do
{
qu = sr.ReadLine();
if (qu != null)
{
Console.WriteLine(qu);
Console.WriteLine("Entrez votre reponse :");
reponse = Console.ReadLine();
sw.WriteLine(reponse);
}
else
{
System.Threading.Thread.Sleep(1000);
}
}while (qu != null);

Merci encore à vous 2 !
0
Rejoignez-nous