Integrer chak ligne de fichier ds une case d'un tableau

Signaler
Messages postés
2
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
22 août 2005
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
bijour

je travaille sur les fichiers ,et du a une comparaison de deux fichier g pensé au principe des tableaux ,donc g consideré une ligne d'un fichier comme une case de tableau mais mon programme se bloque sur la premiere ligne ..voici mon code ,svp dites moi pourkoi il considaire le fichier comme suivant:
g un ficihier txt :
aaaaaaa
bbbbbb
cccccc et qd je mets tab[i]=sr.ReadLine();
il le voit comme suit :
tab[0]=aaaaaaa
tab[1]=""
tab[2]=""
et qd g mis tab1[i]=sr1.ReadToEnd();
g eu ca :
tab[0]=aaaaaaa bbbbbbb ccccccc
tab[1]=""
.
.
mon code est le voici

StreamReader sr1 = File.OpenText(FILE_NAME1);


StreamReader sr2 = File.OpenText(FILE_NAME2);



string [] tab1=
new
string[FILE_NAME1.Length];



string [] tab2=
new
string[FILE_NAME2.Length];



for(
int i=0;i<FILE_NAME1.Length;i++)


{



for(
int j=0;j<FILE_NAME2.Length;j++)


{


tab1[i]=sr1.ReadLine();


tab2[i]=sr2.ReadLine();



if(tab2[i+j]!=tab1[i])


{



if(tab1[i]==tab2[i+j+1])


{


FileStream fichier1=
new FileStream("C:\\modifier1.txt",FileMode.Create,FileAccess.Write);


StreamWriter sw1 =
new StreamWriter(fichier1);


sw1.WriteLine(tab2[i+j].ToString());


sw1.Close();


fichier1.Close();


}



else


{


MessageBox.Show("aucune ligne n'est modifiée");


j++;


}



if(tab1[i+j+1]==tab2[i])


{


FileStream fichier2=
new FileStream("C:\\desinstaller.txt",FileMode.Create,FileAccess.Write);


StreamWriter sw2 =
new StreamWriter(fichier2);


sw2.WriteLine(tab1[i+j].ToString());


sw2.Close();


fichier2.Close();


}



else


{


MessageBox.Show("aucune ligne n'est desinstallée");


j++;


}


}



else


{


j++;


}


}



brek;


}


}

6 réponses

Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
Est ce que tu t'es apercu que la taille de tes tableaux correspond au nb de caractère du nom de tes fichiers.

Peux tu essayé d'indenter ton code pour comprendre quelque chose



ET STP peux tu écrire en français et pas en style SMS...

Théo
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, c'est vrai que c'est pas très clair, petit rappel ReadLine lit une ligne et ReadToEnd lit jusqu'a la fin du fichier. Tu peux utiliser un ArrayList:

StreamReader sr = null;


try
{
string line = string.Empty; ArrayList list new ArrayList( ); // Capacity 16
sr = new StreamReader( FILE_NAME );


while ( ( line = sr.ReadLine( ) ) != null )
list.Add( line );


//string[ ] tab = ( string[ ] )list.ToArray( typeof( string ) );
}
finally
{
if ( sr != null )
sr.Close( );
}
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
voire plus simple.

string[] tab = sr.ReadToEnd().Split('\n');


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
L'idée est bien mais selon le format du fichier, tu as laissé le '\r' du délimiteur de nouvelle ligne ( "\r\n" ) à la fin de la ligne.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
c'est pas très grave...

string[] tab = sr.ReadToEnd().Replace("\r\n","\n").Split('\n');

c'est mieux ?


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Viii