Langage C, Probleme de concaténation
Résolu
Bonjour,
Je reviens encore vers vous car tous vos conseils m'ont été de grande utilité.
Mon programme touche a sa fin, il fonctionne tres bien dans son ensemble mais un soucis persiste encore.
En effet, dans ce programme j'envoie les données de trois tableaux sur un fichier texte (phase qui se passe tres bien), puis lors du redémarrage du programme je fais une lecture de ce fichier et ré-injecte les données dans mes trois tableaux (ce qui fonctionne aussi tres bien).
Cependant, lors de cette deuxieme phase si je modifie mes données une fois qu'elles ont été remises dans mes tableaux (ajout de données, suppression, ou modification), lors de la ré-écriture dans le fichier texte, les données se mettent bout a bout et non ligne par ligne. Au lieu d'avoir un fichier de ce genre :
1 9 Toto
2 8 Tata
9 5 Cazu
7 1 Pineau
Je me retrouve avec un fichier de ce genre (si j'ajoute 8 9 Manu) :
8 9 Manu
1 9 Toto2 8 Tata9 5 Cazu7 1 Pineau
J'ai un saut de ligne apres l'ajout que je viens de faire et le reste de l'ancien fichier se concatène. Pourtant c'est toujours la meme fonction que j'utilise pour entrer les données dans les tableaux, en ajouter et lécrire les données dans mon fichier.
Voila la fonction en question :
Le problème est que pour remettre les donées dans mes tableaux, je compte le nombre de lignes pour faire une boucle "for". Hors lors d'un ajout le programme ne remet plus les données a la ligne a chaque ligne du tableau.
Ci dessous ma fonction qui me sert a lire et ré écrire mon fichier dans mes tableaux.
Si quelqu'un pouvait m'expliquer d'où vient mon problème je lui en serais reconnaissant.
Merci d'avance.
Cordialement Pineau
Je reviens encore vers vous car tous vos conseils m'ont été de grande utilité.
Mon programme touche a sa fin, il fonctionne tres bien dans son ensemble mais un soucis persiste encore.
En effet, dans ce programme j'envoie les données de trois tableaux sur un fichier texte (phase qui se passe tres bien), puis lors du redémarrage du programme je fais une lecture de ce fichier et ré-injecte les données dans mes trois tableaux (ce qui fonctionne aussi tres bien).
Cependant, lors de cette deuxieme phase si je modifie mes données une fois qu'elles ont été remises dans mes tableaux (ajout de données, suppression, ou modification), lors de la ré-écriture dans le fichier texte, les données se mettent bout a bout et non ligne par ligne. Au lieu d'avoir un fichier de ce genre :
1 9 Toto
2 8 Tata
9 5 Cazu
7 1 Pineau
Je me retrouve avec un fichier de ce genre (si j'ajoute 8 9 Manu) :
8 9 Manu
1 9 Toto2 8 Tata9 5 Cazu7 1 Pineau
J'ai un saut de ligne apres l'ajout que je viens de faire et le reste de l'ancien fichier se concatène. Pourtant c'est toujours la meme fonction que j'utilise pour entrer les données dans les tableaux, en ajouter et lécrire les données dans mon fichier.
Voila la fonction en question :
void affichage(int Inter[], int Prio[], int *i, int *var, char Tech[][20]) { int z=*i, x=*var, k=0, tamp=10; FILE* fichier = NULL; fichier = fopen("Interventions.txt", "w+"); printf("\n\n"); printf("Appuyez maintenant sur 'Entree' pour afficher les interventions.\n\n\n"); getch(); for(tamp=10; tamp>=0; tamp--) { for (z=0 ; z<=x ; z++) { if (Prio[z]==tamp) { if (fichier != NULL) { fprintf(fichier, "%d %d %s", Inter[z], Prio[z], Tech[z]); printf("Intervention %d (Priorite %d).\nIntervenant : %s", Inter[z], Prio[z], Tech[z]); printf("\n"); } } } } fclose(fichier); *i=z; *var=x; return ; }
Le problème est que pour remettre les donées dans mes tableaux, je compte le nombre de lignes pour faire une boucle "for". Hors lors d'un ajout le programme ne remet plus les données a la ligne a chaque ligne du tableau.
Ci dessous ma fonction qui me sert a lire et ré écrire mon fichier dans mes tableaux.
void lecture(int Inter[], int Prio[], int *i, int *var, char Tech[][20]) { int z=*i, x=*var, n=0, c; FILE* fichier = NULL; fichier = fopen("Interventions.txt", "r"); if (fichier != NULL) { while ((c = fgetc(fichier)) != EOF) //Comptage du nbr de lignes { if (c == '\n') { n++; } } x=n-1; fseek(fichier, 0, SEEK_SET); for(z=0; z<=x; z++) { fscanf(fichier, "%d %d %s", &Inter[z], &Prio[z], &Tech[z]); printf("Intervention %d (Priorite %d).\nIntervenant : %s\n\n", Inter[z], Prio[z], Tech[z]); } } fclose(fichier); *i=z; *var=x; return ; }
Si quelqu'un pouvait m'expliquer d'où vient mon problème je lui en serais reconnaissant.
Merci d'avance.
Cordialement Pineau
A voir également:
- Langage C, Probleme de concaténation
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Inverse de concatener excel ✓ - Forum Excel
C'est bon je viens de comprendre mon probleme et de le résoudre.
En fait le soucis venait que lors de la saisie des chaines de caracteres, mon tableau skokait un \n a la fin de ma chaine.
Et lors de le remise en tableau dans le sens fichier =>tableau ce meme \n n'etait plus la d'ou la concaténation.
Mais j'ai viré le \n te ca va beaucoup mieux.
Merci beaucoup.