Charger lignes fichier csv dans tableau C
Résolu
nounou_89
Messages postés
56
Statut
Membre
-
nounou_89 Messages postés 56 Statut Membre -
nounou_89 Messages postés 56 Statut Membre -
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
-
Salut
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
-
Il 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;
} -
-
-
-
-