Charger lignes fichier csv dans tableau C
Résolu
nounou_89
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
nounou_89 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
nounou_89 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Charger lignes fichier csv dans tableau C
- Fichier bin - Guide
- Tableau word - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
Salut
Pourquoi fgets ne fonctionne pas ?
Si tu connais le nombre de variables à récupérer, tu peux utiliser fscanf.
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;
}
/* 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;
}