[C] Lire un fichier .txt
Fermé
Utilisateur anonyme
-
28 août 2007 à 14:01
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 31 août 2007 à 22:19
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 31 août 2007 à 22:19
A voir également:
- [C] Lire un fichier .txt
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
10 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
28 août 2007 à 20:30
28 août 2007 à 20:30
Si tu es sous linux le plus rapide c'est de faire un sed. Si tu dois le faire en C, il suffit d'ouvrir ton fichier (fopen), et de lire les caractère un par un (fgetc). Si c'est un ':' tu le remplaces (fputc), QUand tu as fini de lire le fichier tu le ferme (fclose). Exemple :
ce qui donne ;
Bonne chance
int main(int argc,char **argv){ FILE *f_in,*f_out; char cur_char; if(argc!=3){ fprintf(stderr,"usage: %s file_in file_out\n",argv[0]); return 1; } f_in = fopen(argv[1],"rt"); if (!f_in){ fprintf(stderr,"Error opening file [%s]\n",argv[1]); return 2; } f_out = fopen(argv[2],"w"); if (!f_out){ fclose(f_in); fprintf(stderr,"Error opening file [%s]\n",argv[2]); return 3; } while (!feof(f_in)){ cur_char = fgetc(f_in); fputc(cur_char == ':' ? '\t' : cur_char,f_out); } fclose(f_in); fclose(f_out); return 0; }
ce qui donne ;
(mando@aldur) (~) $ gcc -W -Wall -o plop.exe plop.c (mando@aldur) (~) $ cat pouet ncaiocnsoa:cas:cas:csa:c:a acsascsa::caasc::acs (mando@aldur) (~) $ ./plop.exe pouet pouet2 (mando@aldur) (~) $ cat pouet2 ncaiocnsoa cas cas csa c a acsascsa caasc acs
Bonne chance
Utilisateur anonyme
29 août 2007 à 08:25
29 août 2007 à 08:25
Merci mais l'entreprise pour laquelle je dois réalisé ce projet tourne uniquement sur Windows donc...
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
29 août 2007 à 09:27
29 août 2007 à 09:27
Ca ne change rien au source car ici je n'ai utilisé que des fonctions standards du C. C'est juste au niveau de la compilation et de l'exécution (tu peux utiliser dev cpp par exemple qui est gratuit et basé sur gcc) que ça change quelque chose.
Bonne chance
Bonne chance
Utilisateur anonyme
29 août 2007 à 10:09
29 août 2007 à 10:09
Merci beaucoup, ça marche!
Le seul problème est qu'il me rajoute un caractère à la fin du fichier, un 'y' avec deux points dessus... Comment puis-je éviter ça ?
Le seul problème est qu'il me rajoute un caractère à la fin du fichier, un 'y' avec deux points dessus... Comment puis-je éviter ça ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
29 août 2007 à 18:10
29 août 2007 à 18:10
Je sais pas je n'ai pas eu ce problème. Ca arrive quand un fichier se ferme mal ou est tronqué. Tu as recopié le code tel que je te l'ai donné ou tu as fait des modifications ? Si oui peux-tu me donner ta version ?
Bonne chance
Bonne chance
Herr Dr von Apfelstrudel
Messages postés
198
Date d'inscription
lundi 29 janvier 2007
Statut
Membre
Dernière intervention
10 février 2010
181
29 août 2007 à 19:34
29 août 2007 à 19:34
Salut,
pourquoi vouloir modifier ton fichier ? Il suffit de l'importer dans excel en spécifiant ";" comme séparateur de colonne.
pourquoi vouloir modifier ton fichier ? Il suffit de l'importer dans excel en spécifiant ";" comme séparateur de colonne.
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
29 août 2007 à 21:12
29 août 2007 à 21:12
Complètement d'accord. Mais bon on ne discute pas les ordres de l'entreprise :)
Utilisateur anonyme
30 août 2007 à 08:47
30 août 2007 à 08:47
Bonjour
à Herr Dr von Apfelstrudel: Parce que je devrai les concaténer avant de les transformer, il faut que cela soit automatique et réalisable sur n'importe quel PC sans que l'opérateur ait a changé quoi que ce soit.
à mamiemando: Je n'ai pas modifier ton source, mais les lignes des fichiers texte dépassent 610 caractères... peut-être est-ce la raison.
à Herr Dr von Apfelstrudel: Parce que je devrai les concaténer avant de les transformer, il faut que cela soit automatique et réalisable sur n'importe quel PC sans que l'opérateur ait a changé quoi que ce soit.
à mamiemando: Je n'ai pas modifier ton source, mais les lignes des fichiers texte dépassent 610 caractères... peut-être est-ce la raison.
Sed est dispo sous Win32. Tu peux le trouver dans l'archive dispo ici: https://sourceforge.net/projects/unxutils/
Apres si mes souvenirs sont bons ton probleme se resume a
sed.exe -e 's/;/\t/g' file_in > file_out
Apres si mes souvenirs sont bons ton probleme se resume a
sed.exe -e 's/;/\t/g' file_in > file_out
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
31 août 2007 à 22:19
31 août 2007 à 22:19
Je ne vois pas trop pourquoi puisque il n'y a aucun buffer, en tout cas dans le code que je t'ai donné...