这是我编写的程序的一小部分,用于将文件BesselFunction.txt
的内容保存到数组ZeroBesselFuncTM
constant=fopen("BesselFunction.txt","r");
for(i=0;i<20;i++){
fscanf(constant,"%lf\n", &zero);
ZeroBesselFuncTM[i]=zero;
printf("inside for loop\n");
}
for(i=0;i<20;i++){
printf("%0.4lf\n", ZeroBesselFuncTM[i]);
}
虽然数组经过19次循环,但数组不会读取我的输入文件。
答案 0 :(得分:2)
您需要检查文件是否已打开以及是否已读取输入。如果文件过早结束,您还需要停止阅读。
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
const char *filename = "BesselFunction.txt";
double ZeroBesselFuncTM[20];
double zero;
int i, j, n;
FILE *constant;
constant = fopen(filename, "r");
if (constant != NULL) {
i = -1;
do {
i++;
n = fscanf(constant, "%lf\n", &zero);
if (n == 1) {
ZeroBesselFuncTM[i] = zero;
} else if (n == 0) {
fprintf(stderr, "Invalid input\n");
exit(EXIT_FAILURE);
}
} while ((i < 20) && (n != EOF));
for(j = 0; j < i; j++) {
printf("%0.4f\n", ZeroBesselFuncTM[j]);
}
} else {
fprintf(stderr, "Cannot open file %s: %s\n", filename, strerror(errno));
exit(EXIT_FAILURE);
}
return 0;
}
答案 1 :(得分:1)
首先检查错误文件是否正确打开。
constant=fopen("BesselFunction.txt","r");
if(constant == NULL) {
//Process the error
}
同时检查可执行文件所在目录中的文件BesselFunction.txt
。
第二次检查fscanf
错误代码以获取更多更新。
int result = fscanf(constant,"%lf\n", &zero);
if (result <= 0) {
//Process the error.
}