SebLinck
Messages postés212Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention23 juin 2011 17 févr. 2009 à 22:15
Ce que je comprend:
while (feof(fin1)==0 || feof(fin2)==0) // tant que l'on n'est pas a la fin du fichier fin1 ou fin2
{
if(ficOrg) { // si Org > 0 ( Org est booléen ? entier ?)
strncpy(lin1a,&lin1[8],4); // voir http://www.cplusplus.com/reference/clibrary/cstring/strncpy.html lin1a[4]=0// on positionne le caractère de fin de chaine après le dernier caractère copié dans lin1a strncpy(lin2a,&lin2[8],4); //on copie 4 caractères de la chaine lin2[8] dans lin2a
lin2a[4]=0; // mieux vaut faire lin2a[4] = '\0'; pour positionner le caractère de fin de chaine.
strncpy(lin2a,&lin2[0],5); // voir http://www.cplusplus.com/reference/clibrary/cstring/strncpy.html lin2a[5]=0; lin1a[4]=0; // Caractère de fin de chaine...
if (strcmp(lin2a, "II-LP") 0 || strcmp(lin2a, "II-ED") 0 )// la chaine lin2a est II-LP OU SI lin2a est II-ED
{ i =j=0; // pourquoi ne pas les avoir initialisé à leur déclarations
for(k=7; k<24; k++) // on incrémente k de 7 a 23 (ou 24 a vérifier )
if (lin2[k]==';'&& i==0)i=k; // ATTENTION le fort n'execute que cete ligne !
strncpy(lin2as,lin2,i); // on copie donc de 7 puis 8 puis 9 puis .... 23 caractères si lin2k[7 .... 23] est ";"
lin2as[i] = 0;// Caractère de fin de chaine
if (strcmp(lin2as, lin2as_old) == 0) { si la chaine lin2as et lin2as_old sont identiquent ( on sais pas d'ou elles sorteent ceus deux la .....)
nbmulti = nbmulti+1; //on incrémente nbmulti
if(nbmulti > 10) erreur(6,"10"); // si nbmulti est égale à 11 on appel la fonction erreur -> (Cf définition)
} else { //sinon
if (multi==1) { // si multi est égale à 1
/* printf("Ecriture %s \n", lin2as_old); */ on affiche sur la sortie standard la chaine lin2as_old
for(i=0;i<=nbmulti;i++) // on incrémente i de 0 à nbmulti
fputs(&tlp[i][0],fout); //on écrit le premier caractère de la chaine tlp[i] dans le fichier fout
multi=0; // ATTENTION on execute que cette ligne
}
nbmulti = 0;
strcpy(lin2as_old, lin2as); // on sauvegarde la chaine lin2as dans lin2as_old pour le provhain tour
}
strcpy(&tlp[nbmulti][0], lin2); // copie lin2 dans tlp[nbmulti]
}
}
Voilà, maintenant je vais faire mon petit commentaire :
Une belle dmonstration de l'importance de respecter deux règle simple:
une ligne de code = une ligne de commantaire
Nomer ses variables de façon a ce qu'elle soit compréhensible
(ce qui permet souvent de s'abstenir de suivre la première règle)
cs_Yanis1973
Messages postés2Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention18 février 2009 18 févr. 2009 à 10:46
Merci Sébastien pour ton aide.
Si tu veux, à la base c'est un programme de comparaison de 2 fichiers,
en le testant j'ai l'impression qu'il me sort des résultat aléatoire.
en gros une ligne modifiée dans le fich2 , elle doit etre reporter dans le fichier résultat.
une ligne modifiée dans le fich2 , il faut la reporté avec toutes les lignes (si y a plusieurs lignes de meme identifiant )(que la ligne modifé) dans fichier resultat.
et danc je crois tte se passe dans la fonction recopie.!!!!
j'ai du mal sincérement
la je mets à ta disposition tt le code du programme. si t'es peux m'aider .
N.B pour complier ss unix ==== > make main ( le nom du programme est main.c)
pour exécuter ====> main fich1 fich2
je mets les le main.c les 2 fichiers ds le meme répertoire pour faciliter les testes.