Petite aide en C
Fermé
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
-
25 sept. 2008 à 18:39
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 26 sept. 2008 à 23:14
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 26 sept. 2008 à 23:14
A voir également:
- Petite aide en C
- Petite amie virtuelle en français - Accueil - Intelligence artificielle
- Comment dévisser une petite visse sans tournevis - Forum Réseaux sociaux
- Petite vague clavier - Forum Clavier
- La fenetre actuelle est trop petite pour afficher correctement cette feuille - Forum Google Docs
- Comment on fait une vague tout seul - Forum Clavier
30 réponses
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 19:40
25 sept. 2008 à 19:40
WAIIIII BRAVO TU ASSURES :D
Ton pti code à marché :DD
Une dernière question si vous avez le temps, comment faire pour lire une seconde ligne ?
un tableau avec [i][j] ?
Merci Merci :D
Ton pti code à marché :DD
Une dernière question si vous avez le temps, comment faire pour lire une seconde ligne ?
un tableau avec [i][j] ?
Merci Merci :D
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
25 sept. 2008 à 19:46
25 sept. 2008 à 19:46
salut,
pour lire une seconde ligne et même jusqu'à la n-ième ligne, il suffit d'utiliser une boucle while.
while( (fscanf(....)) != EOF)
{
je compare chaque ligne de chaque fichier ... etc
}
pour lire une seconde ligne et même jusqu'à la n-ième ligne, il suffit d'utiliser une boucle while.
while( (fscanf(....)) != EOF)
{
je compare chaque ligne de chaque fichier ... etc
}
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
25 sept. 2008 à 19:42
25 sept. 2008 à 19:42
non un tableau a une dimension suffit mais il faudrait faire une boucle si tu veut comparer chaque ligne des deux fichiers
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 19:45
25 sept. 2008 à 19:45
Hum..
Quelque chose du genre :
for ( i=0; i<NB_LIGNES;i++)
{
//traitemement
}
?
Mais je ne comprend pas comment cela permet de changer de ligne =/
Quelque chose du genre :
for ( i=0; i<NB_LIGNES;i++)
{
//traitemement
}
?
Mais je ne comprend pas comment cela permet de changer de ligne =/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
25 sept. 2008 à 19:56
25 sept. 2008 à 19:56
ben c'est un curseur qui se deplace sur chaque caractere de ton fichier donc sa position avance au fur et a mesure que tu lis dedans quand il arrive au caractere '\n' de fin de ligne il passe a la ligne suivante tout seul
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 19:58
25 sept. 2008 à 19:58
Merci oupsman :) ( et mype et 00julien00 bien sur :d )
je vais tester cela :D
je vais tester cela :D
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
25 sept. 2008 à 20:02
25 sept. 2008 à 20:02
pas de quoi, tiens nous au jus
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 20:08
25 sept. 2008 à 20:08
Je ne vois pas où insérer ma boucle while :x
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
25 sept. 2008 à 20:17
25 sept. 2008 à 20:17
la boucle while c'est juste apres avoir ouvert tes trois fichiers.
J'ouvre mes trois fichiers, tant que je n'arrive pas en fin de fichier ( càd EOF), je lis ligne par ligne et je compare.
J'ouvre mes trois fichiers, tant que je n'arrive pas en fin de fichier ( càd EOF), je lis ligne par ligne et je compare.
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 20:19
25 sept. 2008 à 20:19
litalib ?
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 20:32
25 sept. 2008 à 20:32
Yeahh
je vois des réponses comme celles de mc auquelles je n'ai pas répondu :x
Apparement elles se sont pas affichées correctement =/
mc :
Si je comprends bien ton probleme est le suivant
fprintf(fichier3, "%s", chaine2); => ecrit dans le fichier
fgets(chaine3, TAILLE_MAX, fichier3); => lit dans ce meme fichier
printf("ligne %d du fichier 3 : %s\n\n", i,chaine3); => affiche ce qui vient d'etre lu
Et BAM! rien n'a été ecrit à l'écran..... c'est normal docteur! il faut imaginer le fichier comme une bande sur laquelle on dispose un curseur. A l'ouverture, ce curseur est au debut du fichier. Lors de l'ecriture il avance et se retrouve donc a la fin des choses que tu viens d'ecrire. Ensuite la lecture intervient, mais ou est le curseur? a la fin, donc il n'y a rien a lire, donc aucun affichage. Si j'etais toi, je verifierais si rien ne se trouve dans le fichier (en l'ouvrant a la main, et en verifiant a l'oeuil). Normalement les donnees doivent etre la.
merci pour ton aide :)
je vois des réponses comme celles de mc auquelles je n'ai pas répondu :x
Apparement elles se sont pas affichées correctement =/
mc :
Si je comprends bien ton probleme est le suivant
fprintf(fichier3, "%s", chaine2); => ecrit dans le fichier
fgets(chaine3, TAILLE_MAX, fichier3); => lit dans ce meme fichier
printf("ligne %d du fichier 3 : %s\n\n", i,chaine3); => affiche ce qui vient d'etre lu
Et BAM! rien n'a été ecrit à l'écran..... c'est normal docteur! il faut imaginer le fichier comme une bande sur laquelle on dispose un curseur. A l'ouverture, ce curseur est au debut du fichier. Lors de l'ecriture il avance et se retrouve donc a la fin des choses que tu viens d'ecrire. Ensuite la lecture intervient, mais ou est le curseur? a la fin, donc il n'y a rien a lire, donc aucun affichage. Si j'etais toi, je verifierais si rien ne se trouve dans le fichier (en l'ouvrant a la main, et en verifiant a l'oeuil). Normalement les donnees doivent etre la.
merci pour ton aide :)
heroux67
Messages postés
21
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
6 novembre 2008
25 sept. 2008 à 21:01
25 sept. 2008 à 21:01
hum.. ba au final je n'ai pas réussi a lire plus d'une ligne =/
merci de votre aide :D
merci de votre aide :D
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
26 sept. 2008 à 23:14
26 sept. 2008 à 23:14
En fait, si je comprend bien ton problème, tu veux comparer ligne par ligne les trois fichiers.
Je ne sais pas comment est-ce que tu l'as codé mais si j'étais à ta place voici mon algo :
primo je défini la fonction int CompareLigne(char * ligne1, char * ligne2);
cette fonction renvoi 1 si les deux lignes sont identiques, sinon elle renvoi 0.(c'est une fonction pas très simple car il faut que tu compares caractères par caractères donc faisant appel à d'autres sous-fonctions que tu concevras)
secondo en supposant que tu as conçu la première étape, tu applique cette fonction sur les trois fichiers en même temps comme je te l'ai expliqué :
{
...
int n=1;
char *ligne1, *ligne2, *ligne3;
ouverture des 3 fichiers en mode "r" (pour read).
while(fscanf(fichier1, "%s", ligne1) != EOF)
{
if( (CompareLigne(ligne1, fscanf(fichier2, "%s", ligne2) == 0) || (CompareLigne(ligne1, fscanf(fichier3, "%s", ligne3) == 0))/*des qu'il y a au moins une ligne qui n'est pas identique a l'une des 2 autres*/
{
printf("\nUne des lignes n'est pas identique\n");
exit(0);/*ou return 0, en tout cas on a le resultat voulu*/
}
printf("\nLes trois lignes des %d -ieme lignes des fichiers sont identiques \n", n);
n++;
}
exit(0); /*ou return 0, c'est à toi de voir ce qui te convient mais on sort du programme*/
}
Voilà, cet algo marche à priori
Je ne sais pas comment est-ce que tu l'as codé mais si j'étais à ta place voici mon algo :
primo je défini la fonction int CompareLigne(char * ligne1, char * ligne2);
cette fonction renvoi 1 si les deux lignes sont identiques, sinon elle renvoi 0.(c'est une fonction pas très simple car il faut que tu compares caractères par caractères donc faisant appel à d'autres sous-fonctions que tu concevras)
secondo en supposant que tu as conçu la première étape, tu applique cette fonction sur les trois fichiers en même temps comme je te l'ai expliqué :
{
...
int n=1;
char *ligne1, *ligne2, *ligne3;
ouverture des 3 fichiers en mode "r" (pour read).
while(fscanf(fichier1, "%s", ligne1) != EOF)
{
if( (CompareLigne(ligne1, fscanf(fichier2, "%s", ligne2) == 0) || (CompareLigne(ligne1, fscanf(fichier3, "%s", ligne3) == 0))/*des qu'il y a au moins une ligne qui n'est pas identique a l'une des 2 autres*/
{
printf("\nUne des lignes n'est pas identique\n");
exit(0);/*ou return 0, en tout cas on a le resultat voulu*/
}
printf("\nLes trois lignes des %d -ieme lignes des fichiers sont identiques \n", n);
n++;
}
exit(0); /*ou return 0, c'est à toi de voir ce qui te convient mais on sort du programme*/
}
Voilà, cet algo marche à priori