[C]Configurer un retour à la ligne

Résolu
Programmeurembêté -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je voudrais créer un programme en C, il ferait ceci :

Une boucle, qui, à chaque fois qu'elle rencontre le caractère ?, passe à la ligne juste après lui automatiquement, et ainsi du suite, jusqu'a la fin du fichier texte (oui je précise que c'est dans un fichier texte).

Car j'ai 2000 lignes à faire et c'est trop long je voudrais automatiser, mais j'ai j'ai pas d'idée; merci :)



4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,
Pourquoi le faire en C ?
Sinon, ce n'est pas bien dur, à chaque fois que tu lis un caractère peut se traduire par la boucle while et la fonction fgetc.
Par contre, je ne suis pas sûr de comprendre ce que vous entendez par "passe à la ligne juste après lui" ?
Merci de donner un exemple.
0
Programmeurembêté
 
Bonjour,

Tout d'abord merci de votre aide.

Donc pour préciser : mon fichier c'est par exemple (morceau du fichier) :

Comment écrit-on 99 en chiffre romain ? XCIX
Quel est le pays de naissance du tennis ? l'angleterre
Quel est la couleur du fond du chiffre 0 à la roulette ? vert

Or, le programme voulant le lire doit voir ceci (1 ligne question, 1 ligne réponse, etc..) :

Comment écrit-on 99 en chiffre romain ?
XCIX
Quel est le pays de naissance du tennis ?
l'angleterre
Quel est la couleur du fond du chiffre 0 à la roulette ?
vert

Voila, en fait je passe à la ligne après le "?", et comme il y a +- 2000 questions comme celles plus haut je voudrais automatiser (et cela peut me servir plus tard, en plus de ça).

Donc, en algorithme sa ferait à peu près:

DEMMARER
OUVRIR [Nom de fichier][Mode]
Boucle {SI rencontre du caractère "?" ALORS
Passer à la ligne après "?"
SI findufichier
ALORS
Fermer la boucle}
EXIT

Mais je trouve pas comment créer la boucle en C.
0
Programmeurembêté
 
Up (voir commentaires)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Voici un exemple fait rapidement. Il contient peut-être des erreurs mais tu peux t'en inspirer ;-))).

int car;
FILE *fp=fopen(..., "r");
while( (car=fgetc(fp)) != EOF ) {
   putchar(car);
   if (car=='?') putchar('\n');
}
fclose(fp),fp=NULL;
0
Programmeurembêté
 
Ok c'est bon j'ai corrigé un peu, sa marche, mais il y a un espace en début de ligne à chaque réponse je voudrais savoir si, par exemple, il existe une commande comme "EOF" (fin du fichier) qui dit "Début de ligne", comme sa à chaque fois que le prog voit un espace en début de ligne, il l'éfface...
Comme sa j'enlève les espaces :) c'est un peu plus propre, et si tu as un exemple comme celui que tu as donné pour le faire, je suis partant :) Merci
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Normal puisqu'il y a une espace après le point d'interrogation.
Essaie :
int car;
FILE *fp=fopen(..., "r");
while( (car=fgetc(fp)) != EOF ) {
   putchar(car);
   if (car=='?') {
       fgetc(fp);
       putchar('\n');
   }
}
fclose(fp),fp=NULL;
0
Programmeurembêté
 
Merci beaucoup,

Me reste plus qu'a enregistrer ça dans un .txt (je sais faire ça, sauf le fprintf, je sais pas quoi inscrire dans les " " ^^)

Sinon encore merci,

Bonne soirée
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Je te laisse faire pour le fprintf, tu vas bien réussir ;-))).
Sinon, une petite astuce que tu connais peut-être pas : tu lances ton programme en console en ouvrant une fenêtre ms-dos. Et au lieu de faire : nomduprogramme.exe
tu fais : nomduprogramme.exe > sortie.txt
Cela créera un fichier sortie.txt contenant ce que tu veux ;-))).
0
Programmeurembêté
 
Cool une astuce que je ne connaissais pas :D

Un grand merci,

Si j'avais un compte paypal je te donnerai 5 petites euros en remerciement ^^
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ton merci me suffit amplement :-))).

Bonne continuation et peut-être à plus sur le forum.
0