Supprimer ligne vide dans fichier txt

Résolu
LilBisk Messages postés 9 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 11 février 2010 - 26 janv. 2010 à 16:04
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 - 27 mars 2010 à 20:13
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

xranto Messages postés 90 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 31 mars 2014
27 janv. 2010 à 00:57
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.
3
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
26 janv. 2010 à 16:23
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+
 
0
LilBisk Messages postés 9 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 11 février 2010
26 janv. 2010 à 17:23
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 ...
0
LilBisk Messages postés 9 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 11 février 2010
27 janv. 2010 à 09:21
Oh yeaah! Ca marche
Je valide cette réponse

Merci beaucoup, tous!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
help26 Messages postés 13 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 16 mai 2011
27 mars 2010 à 11:28
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);
}
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
27 mars 2010 à 20:13
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))

:)
0
Rejoignez-nous