Supprimer ligne vide dans fichier txt [Résolu]

Signaler
Messages postés
9
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
11 février 2010
-
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
-
Bonjour à tous!

J'ai fait un sous-programme permettant de lire un fichier .txt, récupérer les informations séparées par des ";" et il lit tout le fichier ligne par ligne.

Cependant, le programme bloque lorsqu'il tombe sur une ligne vide.

Comment faire pour que le programme ignore cette ligne vide ou la supprime ?

Voici mon code :

       public static void SPLITTING_FICHIER_DATA(string Chemin_Fichier)
        {
            StreamReader SR;
            string[] Split_Ligne;

            SR = new StreamReader(Chemin_Fichier);
            Liste = new ArrayList();

            Ligne = SR.ReadLine();
            while (Ligne != null)
            {
                if (Ligne.Equals("") == false)
                    {
                    Split_Ligne = Ligne.Split(';');
                    Liste.Add(Split_Ligne);
                    Ligne = SR.ReadLine();
                    }
            }
        }


Merci d'avance!

6 réponses

Messages postés
90
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
31 mars 2014

Salut,

je ne suis pas un bon programmeur en C# mais je pense que le code doit ressembler a ça :
            while (Ligne != null)
            {
                if (Ligne.Equals("") == false)
                {
                    Split_Ligne = Ligne.Split(';');
                    Liste.Add(Split_Ligne);
                    Ligne = SR.ReadLine();
                }
                else {
                    Ligne = SR.ReadLine();
                }
            }

Ton code va surement planter puisqu'il n'y a pas de relecture de ligne quand la dernière ligne est vide et que c'est toujours cette dernière ligne que ton boucle va tester jusqu'à la fin des temps.
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Salut !

Une ligne vide n'existe pas.
Elle contient au minimum un "retour chariot".

Peut être que c'est la dernière ligne qui te pose problème :
Dans ce cas, au lieu de

while (Ligne != null)

tu peux essayer :

while (SR.EndOfStream == false)

A+
 
Messages postés
9
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
11 février 2010

Non, en fait, je parlais d'une ligne "vide" en plein milieu du fichier, comme :

NomEleve; PrenomEleve; ClasseEleve
DUPONT; Jean-Claude; 1èreS
DURAND; Jean-Marc; TS

DUGLAND; Jean-Luc; Sde
DUPOMMIER; Jean-Jacques; TL
etc ...
Messages postés
9
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
11 février 2010

Oh yeaah! Ca marche
Je valide cette réponse

Merci beaucoup, tous!
Messages postés
13
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
16 mai 2011

salut j'ai un probleme si vous pouvez m'aider ,dans mon code je crée une structure que je met dans un fichier texte et je crée une fonction recherche mais elle me ne renvoie que la derniere structure que j'ai entrée je sais pas pourquoi?



typedef struct _film {
int ind;
char nomf[30];
}film;
void rechercher_fich(char *chaine)
{
film s;

int k;
f=fopen(chaine,"r");
printf("\ndonner la semaine :");
scanf("%d",&s.ind);
while(!feof(f))
{
fread(&s,sizeof(film),1,f);
if(k == s.ind)
break ;
}
printf("la semaine :%d\tnom du film :%s",s.ind,s.nomf);
fclose(f);
}
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
salut

a mon avis c pas seulement le dernier mais le premier touvé avec ind valant k

car tu mais un break et tu sort de fait de la boucle while(!eof(f))

:)