Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
685 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Enlever des lignes dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Enlever des lignes dans un fichier

n°937924
KisskooOoo​l
Posté le 05-01-2005 à 15:07:27  profilanswer
 

Bonjour, je debute, et j'aimerais savoir comment enlever tout les saut de ligne dans un fichier .txt tout bete, en C/C++ si possible, merci d'avance

mood
Publicité
Posté le 05-01-2005 à 15:07:27  profilanswer
 

n°937948
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-01-2005 à 15:26:23  profilanswer
 

KisskooOool a écrit :

Bonjour, je debute, et j'aimerais savoir comment enlever tout les saut de ligne dans un fichier .txt tout bete, en C/C++ si possible, merci d'avance

Le plus simple et le plus sûr est de faire une copie par caractères avec filtrage. Fait de ton mieux, et poste ton code.
 
Remarque. C/C++, ça n'existe pas. C et C++ sont deux langages différents (pas de troll SVP)


Message édité par Emmanuel Delahaye le 05-01-2005 à 15:27:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°937956
Taz
bisounours-codeur
Posté le 05-01-2005 à 15:30:39  profilanswer
 

Emmanuel Delahaye a écrit :


Remarque. C/C++, ça n'existe pas. C et C++ sont deux langages différents (pas de troll SVP)


y a pas de troll, il m'a fallut 1 an pour obtenir 2 catégories séparées.

n°937968
KisskooOoo​l
Posté le 05-01-2005 à 15:34:25  profilanswer
 

Merci. Je fais un filtre sur quoi, comment je reconnait un saut de ligne? c'est le caractere "\n" ?
moi je veux enlever toutes les lignes qui ne contiennent rien, par exemple j'ai :
 
trfged
erhe
eheh
eheh
 
eherh
eh
ehe
ether
 
eheherh

 
et je voudrais :
 
trfged
erhe
eheh
eheh
eherh
eh
ehe
ether
eheherh


Message édité par KisskooOool le 05-01-2005 à 15:34:51
n°938007
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-01-2005 à 15:52:10  profilanswer
 

KisskooOool a écrit :

Je fais un filtre sur quoi,  


Ce que tu veux garder/enlever... (if (...), switch()...)

Citation :


comment je reconnais un saut de ligne? c'est le caractere "\n" ?


Dans un fichier texte, oui.

Citation :

moi je veux enlever toutes les lignes qui ne contiennent rien


C'est encore plus simple. Tu lis avec fgets(), et tu ne recopie que les lignes non vides. 10 lignes de code...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°938074
KisskooOoo​l
Posté le 05-01-2005 à 16:20:26  profilanswer
 

J'ai fait ca :
 
void main (void)
{
char lu;
FILE *source, *destination;
 
source=fopen("Facto.txt","r" );
destination=fopen("Facto2.txt","w" );
 
while(!EOF)
{
fgets(source,"%c",lu);
if(lu!="\n" ) fputs(destination,"%c",lu);
}
 
fclose(source);
fclose(destination);
 
}
 
Mais ca ne fonctionne pas, je ne connais pas fgets, c'est surement pour ca?

n°938177
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-01-2005 à 17:06:14  profilanswer
 

[Merci d'utiliser les balises code (boutons [Fixe] ou [/C/++])]

KisskooOool a écrit :



void main (void)
{
char lu;
FILE *source, *destination;
 
source=fopen("Facto.txt","r" );
destination=fopen("Facto2.txt","w" );
 
while(!EOF)
{
fgets(source,"%c",lu);
if(lu!="\n" ) fputs(destination,"%c",lu);
}
 
fclose(source);
fclose(destination);
 
}


Mais ca ne fonctionne pas, je ne connais pas fgets, c'est surement pour ca?


 
Si tu ne connais pas, il ne faut pas y aller au hasard... Qu'en pense ton livre de C? Que retourne fgets() ? Quels sont les paramètres ? Et fputs() ? Tout ça ne s'invente pas. Il faut lire la doc de ton compilateur ou ton manuel de C...
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
 

  • main() retourne int. Toujours
  • fopen() peut échouer. Avant toute chose, il faut tester la valeur retournée. Si c'est NULL, il y a un problème...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°938186
Taz
bisounours-codeur
Posté le 05-01-2005 à 17:10:43  profilanswer
 

while(!EOF)  
 
oh c'est beau àa :D

n°938474
SBAM
Best recording of rach 3.
Posté le 05-01-2005 à 21:20:51  profilanswer
 

cat source | grep -E '^[^\n]' > destination
 
 :o  
 

Code :
  1. FILE *src = fopen(path, "r" );
  2. FILE *dest = fopen(dest, "w" );
  3. int i;
  4. char *tmp;
  5. while ((tmp = fgetln(src, &i)) != NULL)
  6.   {
  7.     if(tmp[0] != '\n')
  8.         fwrite(tmp, 1, i, dest);
  9.   }


un truc dans le genre quoi  :o


Message édité par SBAM le 05-01-2005 à 21:21:23
n°938493
Taz
bisounours-codeur
Posté le 05-01-2005 à 21:33:25  profilanswer
 

fgetln ???

mood
Publicité
Posté le 05-01-2005 à 21:33:25  profilanswer
 

n°938503
SBAM
Best recording of rach 3.
Posté le 05-01-2005 à 21:37:46  profilanswer
 

Taz a écrit :

fgetln ???


 
Bah oui  :heink:  
stdio.h

n°938514
Taz
bisounours-codeur
Posté le 05-01-2005 à 21:46:06  profilanswer
 

tu sais ce que ça veut dire le std de <stdio.h> ? parce que j'ai bien peur que ta fonction soit inconnue au bataillon. Ca fait déjà un petit moment que je fais du C, et celle là je ne l'ai jamais vu.

n°938516
Taz
bisounours-codeur
Posté le 05-01-2005 à 21:47:15  profilanswer
 

ah ouais, genre c'est une fonction dépréciée BSD4.4

n°938719
SBAM
Best recording of rach 3.
Posté le 06-01-2005 à 07:41:19  profilanswer
 

Taz a écrit :

tu sais ce que ça veut dire le std de <stdio.h> ? parce que j'ai bien peur que ta fonction soit inconnue au bataillon. Ca fait déjà un petit moment que je fais du C, et celle là je ne l'ai jamais vu.


 
 [:greenleaf]


Message édité par SBAM le 06-01-2005 à 07:44:48
n°938747
Taz
bisounours-codeur
Posté le 06-01-2005 à 08:53:39  profilanswer
 

le cas échéant, c'est toi qui est cassé. Utilise fgets. Ou une fonction à la getline, donc on donne le code à tout bout de champs

n°939274
KisskooOoo​l
Posté le 06-01-2005 à 15:52:49  profilanswer
 

Bon, j'ai bien réussi à faire ma copie de fichier, je suis finalement passé par fgetc, mais ce que je lis avec fgetc, je n'arrive pas à le comparer à "\n" pour faire mon filtre, j'ai essayé avec strcmp mais il me demande un char*

n°939280
Taz
bisounours-codeur
Posté le 06-01-2005 à 15:54:31  profilanswer
 

'\n'

n°939295
KisskooOoo​l
Posté le 06-01-2005 à 15:59:00  profilanswer
 

J'ai pas tres bien compris la?

n°939306
Taz
bisounours-codeur
Posté le 06-01-2005 à 16:02:09  profilanswer
 

tu vois double


Message édité par Taz le 06-01-2005 à 16:02:20
n°939314
KisskooOoo​l
Posté le 06-01-2005 à 16:03:46  profilanswer
 

En fait j'ai mon caractere lu par fgets que je stock dans un char appelé tampon, et je voudrais comparer tampon à '\n' pour ne pas copié quand tampon='\n', mais je n'y arrive pas, quand je mets '\n' en parametre à strcmp il me dit que je lui passes un char et qu'il veut un const char*


Message édité par KisskooOool le 06-01-2005 à 16:05:35
n°939326
KisskooOoo​l
Posté le 06-01-2005 à 16:07:11  profilanswer
 

voila ce que je tape et qui ne va pas :
 
if ((tampon != EOF) || (strcmp('\n',tampon) != 0 )) fputc(tampon, dest);

n°939333
Taz
bisounours-codeur
Posté le 06-01-2005 à 16:10:00  profilanswer
 

réfléchis un peu au niveau des types :o
 
"\n" est une chaîne de caractère convertible en const char *
'\n' est un caractère
 
la programmation, c'est pas de la tambouille 'je mélange jusqu'à que ça marche'

n°939354
KisskooOoo​l
Posté le 06-01-2005 à 16:16:11  profilanswer
 

Désolé mais je n'y connais rien en programmation, je débute, moi je suis admin réseau, c'est pas de ma faute si je suis mauvais.
Pour mon pb, je comprend pas trop ce charabiat de char* etc...
Donc il faut que je remplace '\n' par "\n" ?
Si je fais ca j'ai toujours un probleme avec le 2eme argument, il veut un char * alors que je lui passe un char

n°939521
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2005 à 18:09:51  profilanswer
 

KisskooOool a écrit :

voila ce que je tape et qui ne va pas :
 
if ((tampon != EOF) || (strcmp('\n',tampon) != 0 )) fputc(tampon, dest);



if (tampon != EOF
 && tampon != '\n')
{
   fputc(tampon, dest);
}


Evidemment, tampon est de type int...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Enlever des lignes dans un fichier

 

Sujets relatifs
Impossible de mettre un identifiant de fichier dans une variable !SQL - pb de Bulk Insert depuis un fichier txt
enregister un objet dans un fichierCherche à tracer des lignes!!!graphics.h???
Enregistrer dans un fichier un tableau de structureproblème avec fichier .htaccess
Sauvegarder/Lire des objets depuis un fichierinclure un fichier xml dans un autre fichier xml
Utiliser un fichier .c dans mon programme avec QT designerProprietaire de fichier
Plus de sujets relatifs à : Enlever des lignes dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR