Bonjour,
En entreprise, je dois concevoir un petit programme capable de copier le contenu d'un fichier csv à plusieurs lignes dans un autre fichier csv.
J'ai déjà réaliser une partie du programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int NumSemaine;
    char NameTab[20];
    int NbCar=0;
    int NbCar2=0;
    char CarTab[NbCar];
    char BSpace=0x08;
    printf("Quelle semaine voulez-vous voir ?\n");
    scanf("%02d",&NumSemaine);
    sprintf (NameTab,"TabSMN%d.csv", NumSemaine);
    printf("%s\n",NameTab);
    FILE* Fichier = NULL;
    FILE* Fichier2 = NULL;
    Fichier=fopen(NameTab,"r");
    Fichier2=fopen("Test.csv","r+");
    if (Fichier != NULL)
    {
        printf("Fichier present !\n");
        fseek(Fichier,0,SEEK_END);
        NbCar=ftell(Fichier);
        fseek(Fichier,0,SEEK_SET);
        printf("Il y a %d caracteres dans le fichier\n",NbCar);
        fscanf(Fichier,"%s",&CarTab);
        fprintf(Fichier2,"%s",CarTab);
        fseek(Fichier2,0,SEEK_END);
        NbCar2=ftell(Fichier2);
        do
        {
            NbCar2=NbCar2+2;
            fseek(Fichier,NbCar2,SEEK_SET);
            fscanf(Fichier,"%s",&CarTab);
            fprintf(Fichier2,"\n%s",CarTab);
            printf("%s",CarTab);
            fseek(Fichier2,0,SEEK_END);
            NbCar2=ftell(Fichier2);
        }
        while(NbCar>=NbCar2);
        printf("%d caractere copie\n",NbCar2);
        fclose(Fichier);
        fclose(Fichier2);
    }
    if (Fichier == NULL)
    {
        printf("Fichier introuvable !");
    }
 
}
Cependant j'ai un léger souci, le programme recopie deux fois la dernière ligne. J'ai essayé d'écrire '0x08' (Code Hexa du BackSpace) à la fin du fichier texte jusqu'à ce que le texte copié ait la même longueur que le texte à copier, mais il me rajoute un nombre infini de caractère à la fin du fichier texte au lieu d'effacer les caractères en trop.
J'ai du coup pensé qu'il valait mieux revoir l'analyse de manière à ce que le programme n'écrive pas du tout cette dernière ligne, mais je ne trouve pas la solution...
En attente d'une aide bienfaisante !