Bonjour,
J'ai un peu plus d'experience en Fortran mais je dois modifier un programme écrit en C++ par quelqu'un d'autre afin de l'adapter à mes besoins présents. En ce moment le problème rencontré est la simple lecture d'un fichier contenant titres & nombre, les 2 étant utilisés ultérieurement dans le programme pour sélectionner des calculs. La version totale ressemble a:
le nombre d'éléments à lire variant d'une fois sur l'autre mais la structure général du fichier reste la même à chaque fois... donc ce ne devrait pas être trop dur de tout lire mais en fait la lecture des chaines de caractères s'avère plus difficile que prévu... ou peut-être est ce la definition de mon tableau de caractères qui est foireuse mais je n'ai rien pu trouver qui puisse me débloquer... il y a beaucoup d'élément sur des tableaux de nombre mais pour les caractères je n'ai pu faire de connections... : (Part
Caracteriz
Elem 1
nbT 3 // indique le nombre de lignes identiques qui suivent
T1 200
T2 300
T3 400
Step 200
Labels 802 // indique le nombre de lignes identiques qui suivent
946 a Si 0 -
953 c Si 0 -a
948 d Si 0 -a
706 a C 3 -
708 a C 4 a
709 a N 4 bb
710 a C 5 ba
...
Je pars d'un truc du genre
Lecture et écriture vont bien jusque 33/25, puis 26 irait bien mais à 34 le contenu semble être “CXX0030: Error: expression cannot be evaluated” et quand j'essaie de l'imprimer à l'écran j'obtiens “Unhandled exception at … Access violation reading location…”. Le truc qui m'échape encore plus c'est que si je remplace 33 par 32 et 34 par 33 tout se passe bien... si ce n'est que j'ai plus d'une 100aine de Descrip[] à lire dans les fichiers... une fois 100, une autre fois 150... c'est peut-être un part importante de mon problème... : (
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 int main(char **Descrip) { FILE *fc; float number = new float [500]; fc=fopen(fDetail,"r"); fscanf(fc,"%s\n", Descrip[1]); fscanf(fc,"%s\n", Descrip[2]); printf("%s, %s \n", Descrip[1], Descrip[2]); ... fscanf(fc,"%s %d", Descrip[33], &number[25]); printf("%s %d \n", Descrip[33], number[25]); //... fscanf(fc,"%s %d", Descrip[34], &number[26]); printf("%s %d \n", Descrip[34], number[26]); }
J'ai aussi essayé un truc du genre
... mais là ça foire dès le début avec “access violation writing location…” et quand je regarde le contenu j'obtiens “CXX0030: Error: expression cannot be evaluated”... alors que si je rentre Descrip[1]="blabla" tout semble être OK, mais j'ai vraiment besoin de lire le contenu de ce fichier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int main() { FILE *fc; float number = new float [500]; char **Descrip = new char*[600]; fc=fopen(fDetail,"r"); fscanf(fc,"%s\n", Descrip[1]); }
J'ai essayé d'autres approches mais il est clair que je passe à coté de qq chose d'important et je ne sais pas vraiment quoi... et donc toute suggestion serait la bienvenue....
Merci,
PA
Partager