Syntaxe Fichier [débutante] [Résolu]

Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 14 avril 2005 à 21:45 - Dernière réponse :  rsamourai
- 20 juil. 2005 à 21:13
Bonsoir

Je crée actuellement un jeu ludoeducatif et j'aimerai stocker dans un fichier les questions et les reponses. Mais voilà la synthaxe des fichiers je comprend pas tout et j'aimerai savoir quelles sont les modifications a apporter avec Microsoft Visual c#.net :
Par exemple, je travaille en mode conseil et quand j'ouvre un projet j'ai ce code :

using System;


namespace ConsoleApplication6


{


/// <summary>


/// Description résumée de Class1.


/// </summary>


class Class1


{


/// <summary>


/// Point d'entrée principal de l'application.


/// </summary>


[STAThread]


static void Main(string[] args)


{


}


}

D'après ce que j'ai compris de mes cours, le using.System devient using.system.IO et si on utilise des caractères accentués il faut ajouter using.system.text. Ensuite donc pour créer mon fichier je fais :

FileStream fich = new FileStream ("questionnaire.txt", FileMode.Append (dans un premier temps je veux seulement ecrire dans le fichier, je précise qu'il n'existe pa , FileAccess.Read)
StreamWriter quest = new StreamWriter (fich)

Ensuite je suis complètement perdue : j'aimerai qu'il me propose a chaque fois d'ecrire une question et une reponse donc il me faut deux champs different car mon premier champ est un string et le deuxieme un char.
J'aimerai qu'il me propose d'ecriture une question et une reponse jusqu'a ce que je lui dise non mais je n'arrive même a lui dire d'ecriture une question et un réponse.
Si quelqu'un pouvait m'aider ce serait gentil.

Merci d'avance
Maiku
Afficher la suite 

Votre réponse

33 réponses

Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 14:59
3
Merci
Bien sur

en fait tu n'as qu'a faire ceci




Console.WriteLine ("Inscrivez la question");


streamWriter.Write(Console.ReadLine() + ";"); // ajout d'un point virgule

Console.WriteLine ("Inscrivez la réponse");

streamWriter.WriteLine (Console.ReadLine());


Et ensuite, tu pourras lire une ligne pour choisir une question + reponse, que tu insereras dans un string.

puis tu n'aura qu'a faire un string.Split(';'); sur cette ligne pour
obtenir un tableau avec 2 strings dedans. L'element[0] de ton tableau
sera la question, et l'element[1] de ton tableau sera la reponse.

Donc tu n'auras qu'a comparer la reponse donnée par l'utilisateur avec l'élément[1] du tableau





Bonne continuation.


Mx

Merci MorpionMx 3

codes-sources a aidé 80 internautes ce mois-ci

Commenter la réponse de MorpionMx
Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 15:06
3
Merci
Identifie les sous-chaînes de cette instance qui sont délimitées par un ou
plusieurs caractères spécifiés dans un tableau, puis les place dans un tableau String



En gros, il te sépare une chaine a partir d'un caractere donné, dans mon exemple, le ';'



string coupleQR = "question;reponse";

string[] QR = coupleQR.Splilt(';');



=> ca te donnera



QR[0] = "question";

QR[1] = "reponse";

[frlrfsystemstringclasstopic.htm ]
Mx

Merci MorpionMx 3

codes-sources a aidé 80 internautes ce mois-ci

Commenter la réponse de MorpionMx
ricklekebekoi 305 Messages postés mardi 11 février 2003Date d'inscription 24 avril 2009 Dernière intervention - 14 avril 2005 à 23:04
0
Merci
sa ?

using System
;

namespace ConsoleApplication6

{
/// <summary>
/// Description résumée de Class1.
/// </summary>
class Class1

{
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread
]
static void Main(string[] args
)
{
char continu
;
<HR>

do
{

Console
.WriteLine( "Incrivez la question:" );
string q
= Console
. ReadLine ();Console
.Write( "Inscrivez la bonne réponse: " );
char rep
= char.Parse( Console
.ReadLine() );
// ici Tu enregistre ton rep et ton q dans ton fichier
Console
.Write( "vous enregistrer une autre question ? ( O / N )" );
continu
= char .Parse( Console
.ReadLine().ToUpper() );

}
while( continu
== 'O' );
}
}
}

Eric
Commenter la réponse de ricklekebekoi
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 14 avril 2005 à 23:14
0
Merci
Lut Eric

Disons que tu ne m'a aidé qu'a moitié, moi justement mon prob et l'ecriture et l'enregistrement dans un fichier je ne conné pas la synthaxe exacte.
J'aimerai aussi compte que veut dire ton .ToUpper().
Sinon le ça designé le code que genere automatiquement Microsoft Visual c#.net lors d'un nouveau hors d'apres ce que je sé il y a qq modif a apporter et j'auré aimer savoir lesquels ?

Si qq pouvé m'aider ce seré gentil.

Merci d'avance
Maiku
Commenter la réponse de Maiku
sebseb42 495 Messages postés dimanche 6 juillet 2003Date d'inscription 9 novembre 2007 Dernière intervention - 15 avril 2005 à 01:11
0
Merci
Dans le namespace System.IO il y a les classes StreamReader et StreamWriter qui font ce que tu veux.

Exemple de lecture :

string line;
StreamReader sr = new StreamReader("fichier.ext");

while ((line = sr.ReadLine()) != null)
{
// traitement de line
}
sr.Close();

Exemple d'ecriture :

StreamWriter sw = new StreamWriter("fichier.ext");
while (/* condition */)
{
sw.WriteLine(/* texte */);
}
sw.Close();

Avec Visual Studio tu as une liste qui s'ouvre quand tu fait sr. ou sw. et ceci te permet de voir tout ce que tu peux faire, generallement les noms des fonctions sont tres explicite, et generallement tu utilisera Read, ReadLine, Write, WriteLine et Close

Bon courrage pour la suite
Commenter la réponse de sebseb42
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 08:44
0
Merci
Le .ToUpper() permet de mettre une chaine en majuscule. .ToLower() fait l'inverse

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 13:20
0
Merci
ReBonjour

J'ai essayé de faire un petit mélange des infos que vous m'avez donné, mon programme donc pour l'instant donne ça :


using System.IO;





namespace ConsoleApplication7


{




/// <summary>


/// Description résumée de Class1.


/// </summary>


class Class1


{




/// <summary>


/// Point d'entrée principal de l'application.


/// </summary>






static void Main(string[] args)


{


FileStream fich = new FileStream ("questionnaire.txt",FileMode.Append, FileAccess.ReadWrite,FileShare.Read);


StreamWriter quest = new StreamWriter ("questionnaire.txt");


StreamWriter reponse = new StreamWriter ("questionnaire.txt");


string s1;


bool rep;


Console.WriteLine("Voulez vous inscrire une question et une réponse ?");


do


{


Console.WriteLine ("Inscrivez la question");


quest.WriteLine();


Console.WriteLine ("Inscrivez la réponse");


reponse.WriteLine ();


Console.WriteLine ("Voulez vous enregistrer une autre question ?");


s1 = Console.ReadLine();


rep = Boolean.Parse(s1);


}


while (rep = "oui") ;


}


}


}

Mais le plus curieux ce sont les erreurs qu'il a trouvé, il ne reconnaît mes consoles.writeline deja.
Quelqu'un peut il me dire pourquoi ?

Merci d'avance
Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 13:24
0
Merci
Rajoute using System; en haut, avec ton using System.IO;



Sinon, tu peux taper System.Console.WriteLine(); mais bon, autant rajouter la directive using

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 13:33
0
Merci
Je te remercie de cette réponse qui a viré presque la totalité de mes erreurs MorpionMX.
Quand j'execute mon programme il ne me propose pas d'entrée au clavier les questions et réponses.
Je précise que je travaille en mode console je ne sé pa si ca change quelque chose mais j'aimerai pouvoir entrée a la main mes informations.
Que devrais je changer dans mon code pour y parvenir ?

Merci d'avance
Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 13:34
0
Merci
Je suis en train de corriger tes erreurs, ca va arriver dans 2 ptites minutes ^^

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 13:35
0
Merci
Merci du fond du coeur alors^^
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 13:38
0
Merci
using System;

using System.IO;



namespace ConsoleApplication7

{



class Class1

{



static void Main(string[] args)

{



// Creation d'un nouveau flux

StreamWriter streamWriter = new StreamWriter ("questionnaire.txt");

// on indique
au flux qu'il inscrive automatiquement les questions dans le fichier a
chaque appel de WriteLine

streamWriter.AutoFlush = true;


Console.WriteLine("Voulez vous inscrire une question et une réponse ?");

string s1;

do

{

Console.WriteLine ("Inscrivez la question");


streamWriter.WriteLine(Console.ReadLine()); // on
ecrit l'entrée utilisateur (Console.ReadLine()) dans le flux

Console.WriteLine ("Inscrivez la réponse");

streamWriter.WriteLine (Console.ReadLine()); // idem


Console.WriteLine ("Voulez vous enregistrer une
autre question ?");

s1 = Console.ReadLine();

}

while
(s1.ToLower() == "oui") ; // on boucle tant que s1 sera égal a "oui"

streamWriter.Close(); // On ferme le flux

}

}

}


Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 13:45
0
Merci
ReCoucou

Alors ton code marche très bien je t'en remercie.
J'ai juste deux petites questions :
- Pourquoi n'est -il pas necessaire de déclarer un FileStream ? Dans quel cas ca s'averait necessaire ?
- Où puis je retrouver le fichier qui a été crée avec la liste de toutes mes questions et réponses ?

Merci d'avance
Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 13:56
0
Merci
Le fichier, tu pourras le retrouver dans le meme repertoire que ton executable.

Maintenant ce que je te conseille, c'est de creer un petit formatage, genre



question; reponse

queston; reponse

...



Parce que la, le "tout a la ligne" ce sera peut etre pas génial.

Mieux, tu pourrais utiliser le XML, mais bon, je prefere pas te perturber si tu débute ;)



Pour la question sur le fileStream, Le streamwriter se charge de l'ecriture dans un filestream.

Tu aurrais aussi tres bien pu donc en creer un, et l'associer a ton streamwriter.

D'ailleurs, fais le, sinon je crains que ton fichier texte soit remplacé a chaque fois que tu lanceras l'application.



Remplace cette ligne



StreamWriter streamWriter = new StreamWriter ("questionnaire.txt");



Par celles la :



FileStream fs = new FileStream("Questionnaire.txt", FileMode.Append);

StreamWriter streamWriter = new StreamWriter (fs);



Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 14:02
0
Merci
Alors pour le formatage question;reponse j'ai aucune idée de comment le faire.
Du XML, si tu veux ma mort c'est bien parti.
Suis pas une débutant de C#, j'en fais a mon lycee depuis le debut de l'année, mais je suis une débutant des fichiers, vu qu'on a fait le cours et qu'on a eu des poly mais qu'on a pas fait de tp la dessus.
En parlant de l'executable, je n'en ai pas, je travaille en mode console donc genre dos pas de mode graphique ni rien on a juste la page pour ecrire le code et une fenetre qui l'active.
Donc je vois pas où est mon fichier quand je vé dans ma console.

Maiku
Commenter la réponse de Maiku
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 14:08
0
Merci
J'ai trouvé le fichier questionnaire mais tu as raison, la présentation pas top.
De plus j'ai la question et à la ligne la réponse moi j'aurai voulu tout avoir sur le même ligne.
Car je dois generer ensuite une question avec sa reponse c'est un petit peu le même principe que si j'aurai voulu utiliser un tableau de structure en fait, je dois pouvoir generer une question donc grace a son numero d'enregistrement par exemple avec la réponse qui lui corespond pour faire des comparaisons, c'est un questionnaire on va dire.

Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 14:48
0
Merci
Si tu veux un couple question/reponse sur la meme ligne, tu transforme le premier Console.WriteLine(...) en Console.Write(...)

Mx
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 15 avril 2005 à 14:50
0
Merci
Euh, que dis je, tu transforme streamWriter.WriteLine(...) en streamWriter.Write(...);

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 14:53
0
Merci
Ok

Me seras-il possible de generer une question et sa reponse ?
Genre je genere une question et je met le numero de l'enregistrement dans une constante pour lui dire ensuite de generer la reponse a ce numero d'enregistrement et faire une comparaison avec une réponse saisie ?

Maiku
Commenter la réponse de Maiku
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 15 avril 2005 à 15:02
0
Merci
J'ai a peu pres saisie l'essentiel a part le Split c'est koi exactement ?

Maiku
Commenter la réponse de Maiku

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Syntaxe Fichier [débutante] - page 2