|
|
|
|
Bonjour,
Je code en langage C. J'ai un fichier ec.txt avec plusieurs lignes non formatées les une en dessous des autres.
Chaque ligne est composée d'un nombre, un nom de ville puis 4 autres nombres.
J'aimerai pouvoir supprimer une ligne en donnant le nom de la ville.
Faut t-il décaler toutes les lignes suivantes d'un cran au dessus pour combler le vide ?
Je ne sais pas comment coder tout ça..
Merci d'avance !
Configuration: Windows XP Firefox 2.0.0.14
Bonjour,
|
Salut,
lami20j@debian:~/trash$ cat suppligne.c
#include<stdio.h>
#include<string.h>
int main ()
{
FILE *F, *FW;
char ville[100], s[100];
int n1, n2, n3, n4;
if (NULL == (F = fopen ("ville.txt", "r")))
return -1;
if (NULL == (FW = fopen ("ville_resultat.txt", "w")))
return -1;
printf ("Ville à supprimer ? ");
scanf ("%s", ville);
while (fscanf (F, "%d %s %d %d %d", &n1, s, &n2, &n3, &n4) == 5)
if (strcmp (s, ville) != 0)
fprintf (FW, "%d %s %d %d %d\n", n1, s, n2, n3, n4);
fclose (F);
fclose (FW);
return 0;
}
lami20j@debian:~/trash$
lami20j@debian:~/trash$ cat ville.txt
1 Paris 1 1 1
2 Lyon 2 2 2
3 Marseille 3 3 3
4 Bordeaux 4 4 4
lami20j@debian:~/trash$ gcc suppligne.c
lami20j@debian:~/trash$ ./a.out
Ville à supprimer ? Lyon
lami20j@debian:~/trash$ cat ville_resultat.txt
1 Paris 1 1 1
3 Marseille 3 3 3
4 Bordeaux 4 4 4
Il y a plusieurs possibilités de le faire. Par exemple tu peux charger le fichier dans la mémoire et faire le traitement. Je pense que la réponse est négative. Soyons positifs ;-) c'est possible Par exemple avec Perl lami20j@debian:~/trash$ cat ville.txt 1 Paris 1 1 1 2 Lyon 2 2 2 3 Marseille 3 3 3 4 Bordeaux 4 4 4 lami20j@debian:~/trash$ perl -ni -e 'print unless /Lyon/' ville.txt lami20j@debian:~/trash$ cat ville.txt 1 Paris 1 1 1 3 Marseille 3 3 3 4 Bordeaux 4 4 4 106485010510997108 |