2017-10-16 38 views
0

Comment lire les doubles délimités par des virgules sans espace blanc?Utilisation de fscanf pour lire les doubles délimités par des virgules

J'ai essayé ce qui suit: fscanf(file, "%lf[^,], &x) mais cela ne fonctionne pas.

Le fichier sera dans le format suivant:

1.0,2.0,4.0 
3.0,6.0,1.0 
+0

Essayez 'fscanf (fichier, "% Si,", & x)' – BLUEPIXY

+0

Voir aussi [l'analyse des problèmes dans un tableau en C] (https://stackoverflow.com/questions/46761990/problems-scanning-into -array-en-c). –

Répondre

2

Au lieu d'utiliser [^,] expression régulière que vous utilisez directement ,.

#include <stdio.h> 
int main(){ 
FILE *fp; 
double buff[255]; 
int i=0; 
fp = fopen("file.txt", "r"); 
while(fscanf(fp, "%lf,",&buff[i++])!=EOF){ 
printf("%0.1lf ", buff[i-1]); 
} 
fclose(fp); 
} 
+1

Notez que la condition '! = EOF' n'est pas vraiment une bonne idée. Si l'utilisateur tape une lettre au lieu d'une virgule, votre boucle continuera indéfiniment. Vous devriez chercher '== 1' puisque vous scannez une valeur à la fois. –