Enlever des lignes dans un fichier

Enlever des lignes dans un fichier - C - Programmation

Marsh Posté le 05-01-2005 à 15:07:27    

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

Reply

Marsh Posté le 05-01-2005 à 15:07:27   

Reply

Marsh Posté le 05-01-2005 à 15:26:23    

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/
Reply

Marsh Posté le 05-01-2005 à 15:30:39    

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.

Reply

Marsh Posté le 05-01-2005 à 15:34:25    

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
Reply

Marsh Posté le 05-01-2005 à 15:52:10    

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/
Reply

Marsh Posté le 05-01-2005 à 16:20:26    

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?

Reply

Marsh Posté le 05-01-2005 à 17:06:14    

[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/
Reply

Marsh Posté le 05-01-2005 à 17:10:43    

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

Reply

Marsh Posté le 05-01-2005 à 21:20:51    

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
Reply

Marsh Posté le 05-01-2005 à 21:33:25    

fgetln ???

Reply

Marsh Posté le 05-01-2005 à 21:33:25   

Reply

Marsh Posté le 05-01-2005 à 21:37:46    

Taz a écrit :

fgetln ???


 
Bah oui  :heink:  
stdio.h

Reply

Marsh Posté le 05-01-2005 à 21:46:06    

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.

Reply

Marsh Posté le 05-01-2005 à 21:47:15    

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

Reply

Marsh Posté le 06-01-2005 à 07:41:19    

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
Reply

Marsh Posté le 06-01-2005 à 08:53:39    

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

Reply

Marsh Posté le 06-01-2005 à 15:52:49    

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*

Reply

Marsh Posté le 06-01-2005 à 15:54:31    

'\n'

Reply

Marsh Posté le 06-01-2005 à 15:59:00    

J'ai pas tres bien compris la?

Reply

Marsh Posté le 06-01-2005 à 16:02:09    

tu vois double


Message édité par Taz le 06-01-2005 à 16:02:20
Reply

Marsh Posté le 06-01-2005 à 16:03:46    

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
Reply

Marsh Posté le 06-01-2005 à 16:07:11    

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

Reply

Marsh Posté le 06-01-2005 à 16:10:00    

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'

Reply

Marsh Posté le 06-01-2005 à 16:16:11    

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

Reply

Marsh Posté le 06-01-2005 à 18:09:51    

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/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed