Supprimer ligne vide dans fichier txt [Résolu]

LilBisk 9 Messages postés jeudi 24 septembre 2009Date d'inscription 11 février 2010 Dernière intervention - 26 janv. 2010 à 16:04 - Dernière réponse : yohan49 382 Messages postés samedi 22 janvier 2005Date d'inscription 13 août 2011 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
xranto 90 Messages postés mardi 6 octobre 2009Date d'inscription 31 mars 2014 Dernière intervention - 27 janv. 2010 à 00:57
3
Merci
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.

Merci xranto 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

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

Merci beaucoup, tous!
Commenter la réponse de LilBisk
help26 13 Messages postés lundi 22 mars 2010Date d'inscription 16 mai 2011 Dernière intervention - 27 mars 2010 à 11:28
0
Merci
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);
}
Commenter la réponse de help26
yohan49 382 Messages postés samedi 22 janvier 2005Date d'inscription 13 août 2011 Dernière intervention - 27 mars 2010 à 20:13
0
Merci
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))

:)
Commenter la réponse de yohan49

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.