Charger lignes fichier csv dans tableau C
Résolu/Fermé
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
-
20 avril 2011 à 17:56
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 - 26 avril 2011 à 21:03
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 - 26 avril 2011 à 21:03
A voir également:
- Charger lignes fichier csv dans tableau C
- Tableau croisé dynamique - Guide
- Fichier rar - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 avril 2011 à 18:11
20 avril 2011 à 18:11
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.
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
12
20 avril 2011 à 18:25
20 avril 2011 à 18:25
si fgets fonctionne mais j'arrive pas a les mettre dans un tableau ou je stocke toute les lignes du fichier
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 avril 2011 à 18:43
20 avril 2011 à 18:43
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++; } }
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
12
24 avril 2011 à 12:11
24 avril 2011 à 12:11
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;
}
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 avril 2011 à 08:24
26 avril 2011 à 08:24
attention aux allocations et au égalisations en chaine de caractères.
pour mettre une chaine dans une autre, il faut utiliser strcpy().
Il manque, entre autre, l'allocation de "lign".
pour mettre une chaine dans une autre, il faut utiliser strcpy().
Il manque, entre autre, l'allocation de "lign".
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
12
26 avril 2011 à 10:49
26 avril 2011 à 10:49
comment sa il manque l'allocation de ligne
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
12
26 avril 2011 à 21:03
26 avril 2011 à 21:03
c'est j'ai decouvert ou il manqué l'allocation merci pour ton aide
nounou_89
Messages postés
44
Date d'inscription
jeudi 4 mars 2010
Statut
Membre
Dernière intervention
20 mars 2014
12
20 avril 2011 à 19:41
20 avril 2011 à 19:41
ok merci je vai essayer sa