Bonjour,
Je suis un débutant en c, j'ai plus l'habitude de programmer en MATLAB mais pour le boulot je dois apprendre à programmer en c.
Donc voilà mon problème : j'ai un fichier texte qui contient une succession de matrice 3*3 comme cela :
Je veux dans un premier temps récupérer toutes les valeurs centrale de ces matrices, voici mon code :234 236 245
241 257 234
245 235 256
234 236 245
241 262 234
245 235 256
234 236 245
241 254 234
245 235 256
234 236 245
241 261 234
245 235 256
Le problème vient de strtol, car il ne me convertit que la première colonne de mes matrices, je pense que cela vient du deuxième argument de cette fonction le NULL (problème d'espace entre les valeurs interprété comme NULL ??).
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
24
25
26
27 #include <stdio.h> #include <stdlib.h> #define TEMP_PATH "/home/flaherty/testgnuplot/temp.txt" int main(void) { int valeurs[256]; FILE *fid=fopen(TEMP_PATH,"r"); //on ouvre le fichier if(NULL == fid) { printf("erreur a l ouverture du fichier..."); } else { int i, cnt=0; char buf[256]; while(NULL != fgets(buf, sizeof buf, fid)) { //on lit ligne par ligne le fichier printf("%s\n",buf); // on affiche ces lignes valeurs[cnt ] = strtol(buf, NULL, 10); ++cnt ; } for(i = 1; i < cnt; i=i+3) { //on récupère les valeurs des lignes centrales des matrices printf("%d\n",valeurs[i]); } printf("%s",buf); } }
Alors qu'en vrai je ne veux pour le moment que la deuxième colonne...
Ma question est comment utiliser strtol pour qu'il convertissent les chaines de caractères obtenues avec fgets en entier et qu'ils les range dans un tableau à 3 colonnes, x lignes pour que je puisse dans un premier temps récupérer les valeurs de la 2 ème colonne, puis dans un deuxième temps faire la moyenne de toutes la matrices 3*3 ?
Voilà j'espère que j'ai exposé clairement mon problème.
Flaherty
Partager