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
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

A voir également:

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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.
0
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
si fgets fonctionne mais j'arrive pas a les mettre dans un tableau ou je stocke toute les lignes du fichier
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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++;
  }
}
0
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
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;
}
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
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".
0
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
comment sa il manque l'allocation de ligne
0
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
c'est j'ai decouvert ou il manqué l'allocation merci pour ton aide
0
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
ok merci je vai essayer sa
0