Le fous de LUCASART Chevalier d'Honneur de la Grande Tasse Bleue
Nombre de messages : 2096
Age : 32
Localisation : Dans l'univers d'un de ses bons vieux jeux d'aventures!!
Date d'inscription : 07/08/2006
| Sujet: Un problème de langage C. Mar 23 Oct 2012 - 20:07 | |
| J'ai un exo qui ne marche pas sur la fin et ça m'énerve je vois pas quoi faire. Voici l'énoncé : - Spoiler:
Ecrire un programme qui ouvre date.txt en lecture, et qui ouvre en ecriture un fichier nommé date2.txt. Lire le fichier date.txt caractère par caractère.
si le caractère lu est le symbole ':' ecrire un espace dans le fichier date2.txt si le caractère lu est un chiffre (c'est à dire si son code ascii est entre 48 et 57), ecrire ce chiffre dans date2.txt dans tous les autres cas, ne rien écrire dans date2.txt
Si le fichier date.txt contient jour:21 mois:12 annee:2012, le fichier date2.txt créé par le programme doit contenir 21 12 2012 Vous pouvez visualiser le contenu de date2.txt dans le terminal à l'aide de la commande cat date2.txt
Modifier ce programme pour qu'à la suite, il lise les 3 valeurs contenues dans date2.txt et les affiche à l'écran au format anglosaxon annee-mois-jour
Si le fichier date.txt contient jour:21 mois:12 annee:2012, le fichier date2.txt créé par le programme doit contenir 21 12 2012 et le programme doit afficher 2012-12-21
Tout marche sauf que j'arrive pas à récupérer les 3 chaines de caractères pour après les affichier dans l'ordre demandé.. mon programme : - Spoiler:
#include<stdio.h>
int main (void) { char x,j[256],m[256],a[256]; FILE *f,*g,*g1; f=fopen("date.txt","r"); g=fopen("date2.txt","w"); g1=fopen("date2.txt","r"); while (feof(f)==0) {fscanf(f,"%c ",&x); if (x==':') fprintf(g," "); if (48<=x && x<=57) fprintf(g,"%c",x); } { fscanf(g1,"%s\t%s\t%s",&j,&m,&a); printf("%s-%s-%s",a,m,j); }
fclose(f); fclose(g); fclose(g1); return; }
Voilà tout est dit^^ _________________ Scénariste Mai 2008 : background cimetière |
|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: Un problème de langage C. Mer 24 Oct 2012 - 8:24 | |
| Marrant que tu demandes ça ici plutôt que sur un forum dédié au C Ça fait un bout de temps que j'ai pas touché au C, mais j'ai l'impression que tu remplaces ':' par un espace (' ') alors que dans la lecture de date2.txt tu cherches des chaînes séparées par des tabulations (\t). De plus je ne sais pas si tu peux ouvrir un fichier en lecture avant même d'avoir fini d'écrire dedans (mais ça j'en suis vraiment incertain). EDIT : De plus, tu ne parcours pas le fichier date2.txt en lecture, puisque tu utilises un seul simple fscanf (sans aucune boucle sur le pointeur). C'est vrai qu'en théorie tu n'auras qu'une ligne dans ce fichier, mais sait-on jamais, surtout que tu l'as ouvert avant d'écrire dedans. _________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|