Bonjour à tous,
moi qui suis habituée au perl, je suis confrontée au manque de petite fonction pratique du C pour le traitement des chaînes de caractères (à moins que je ne les connaissent pas...).
Je vous explique brièvement mon problème. Je vous prie à l'avance de bien vouloir m'excuser si je n'emploie pas les bon termes)
Je possède une chaine de caractère: char ligne [1000] et cette ligne est de la forme: "0.1\t0.7\t1.6\t-0.8\t......\t0.8\n" et j'aimerai transformer cette chaine en un tableau de double ou chaque case contiendrai un élément.
J'ai essayé pas mal de chose avec strtok, mais je n'y arrive pas.
Je vous mets mon code pour essayer d'etre plus clair:
quand je compile, il n'y a pas de problème, par contre quand je l'execute A ne contient que des 0.00000 et si j'affiche a chaque tour de boucle gene1 j'ai toujours le premier element de ma ligne, alors que je m'attendrai au moins a voir le premier element...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, char *argv[]){ int taille=atoi(argv[1]),j; char ligne[10000]; double *A = malloc(taille*sizeof(double)); FILE *file; if ((file = fopen(argv[2],"r"))==NULL){ fprintf(stderr,"impossible d'ouvrir le fichier en lecture\n"); } while (fgets(ligne,10000,file)!=NULL){ for(j=0;j<taille;j++){ char * gene1 = strtok(ligne,"\t"); printf("%s\n",gene1); //affiche tjs le premier element A[j] = atof(gene1); } } return 0; }
Si quelqu'un peut m'aider
Si vous avez des remarque sur des améliorations de mon code, n'ésiter pas, je suis ici pour essayer de m'améliorer
merci
Partager