gpt4 book ai didi

c - 使用 fscanf (C) 从文件中提取 double

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:52 24 4
gpt4 key购买 nike

这是我的问题,我有这些数据:

  // input 1        input 2         output
-2.9300000e+00 -8.3227505e-01 -7.4588269e+00
1.1500000e+00 6.7039029e-01 6.3757647e-02
-3.6000000e-01 -3.9144914e-01 5.9973550e-01
7.0000000e-01 1.1649989e+00 -2.0060024e+00
-1.7900000e+00 -4.9222540e-02 -4.7662334e+00
-9.0000000e-02 -1.4490347e+00 -1.3910318e+00

我想把它们放在一个数组中,但没有任何效果。我尝试使用 fgetc 和 fseek 移动,看起来我的代码理解我想要的格式,但我的数组在运行结束时总是空的。这是我当前的代码:

int hauteur = 6;
int largeur = 3;
FILE* fichier = NULL;
Data data;
data.dimDonnees = largeur;
data.nombreDonnees = hauteur;
int i, j, c;
double **tab;

// Attribution dynamique de mémoire
tab = creerMatrice(hauteur, largeur);

if ((fichier = fopen(nomFichier, "r+")) == NULL ) {
printf("Erreur lors du chargement de %s",nomFichier);
}

// On passe la première ligne de caractères
for(i=0;i<43;i++){fgetc(fichier);}

for (i=0; i<hauteur; i++) {
for (j=0; j<largeur; j++) {
// On avance jusqu'à ce que le caractère ne soit ni un espace ni un retour chariot
while( (c = fgetc(fichier)) == 32 || c == 10 ){}
fseek(fichier,-1,SEEK_CUR);
fscanf(fichier, "%e", &tab[i][j]);
}
}

最后这里是函数 creerMatrice() :

double** creerMatrice(int n, int p) {
double** tab;
int i;
tab = malloc(n*sizeof(*tab));
for(i=0;i<n;i++) {
tab[i]=malloc(p*sizeof(**tab));
}
return tab;
}

最佳答案

实际上,现在它起作用了,我真的不知道为什么但它起作用了!我只是替换

 fscanf(fichier, "%e", &tab[i][j]);

通过

 fscanf(fichier, "%le", &tab[i][j]);

然后我使用 fseek 再次返回。

关于c - 使用 fscanf (C) 从文件中提取 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com