Charger lignes fichier csv dans tableau C
Résolu
Bonjour,
Je dois écrire un programme qui lit un fichier de type csv et range les infos dans une structure de donnée déja définie.
le fichier est écrit de cette façon :
"ljhjj";"fdfdf";"hfdkfhkfhkl";"1";"5";
"kfdknfdk";"fdkgn";"ldflld";"5";"9";
....ainsi de suite .
j'ai voulu utiliser fgets mais j'ai pas pu ... qq pourra m'aider ?? c'est vraiment urgent !!
merci
Je dois écrire un programme qui lit un fichier de type csv et range les infos dans une structure de donnée déja définie.
le fichier est écrit de cette façon :
"ljhjj";"fdfdf";"hfdkfhkfhkl";"1";"5";
"kfdknfdk";"fdkgn";"ldflld";"5";"9";
....ainsi de suite .
j'ai voulu utiliser fgets mais j'ai pas pu ... qq pourra m'aider ?? c'est vraiment urgent !!
merci
3 réponses
-
ContributeurSalut
Pourquoi fgets ne fonctionne pas ?
Si tu connais le nombre de variables à récupérer, tu peux utiliser fscanf. -
si fgets fonctionne mais j'arrive pas a les mettre dans un tableau ou je stocke toute les lignes du fichier
-
ContributeurIl te faut un tableau à double entrée, si ta ligne est stocker dans une variable char* ligne, tu fais :
char tab_ligne[50][50];// ajuste tes dimensions à ce que tu veux faire. int i=0,c=0,c2=0; for(i=0;i<strlen(ligne);++i) { if(ligne[i]==';') { tab_ligne[c][c2+1]='\0'; c++; c2=0; }else { tab_ligne[c][c2]=ligne[i]; c2++; } } -
Moi j'ai fait comme ca mais j'arrive pas a le faire fonctionner
/* Transforme une ligne du fichier en tableau pour recupere les donnees*/
char** transformer_chaine_tab(char* chaine){
char sep[] = ",";
int i;
char** tablo = malloc(6*sizeof(char*));
char* mot = strtok(chaine,sep);
for(i=0 ; i<6 && mot != NULL ; i++){
tablo[i] = mot;
mot = strtok(NULL,sep);
}
return tablo;
}
char*** charger_fichier(char* fichier){
FILE* flot = fopen(fichier, "r");
int i = 0 , nb_lignes = compter_lignes(fichier);
char*** tab = malloc(nb_lignes*sizeof(char**));
char s[TAILLE_MAX_LIGNE+1];
char* ligne;
while(i<10 && (ligne = fgets(s,TAILLE_MAX_LIGNE,flot)) != NULL){
tab[i] = transformer_chaine_tab(ligne);
i++;
printf("i=%d\n ligne=%s\n",i,tab[i][i]);
}
return tab;
} -
-
-
-
-
ok merci je vai essayer sa