c - 我想扫描 txt 文件并将这些数字保存在数组中

标签 c arrays scanf

这是我编写的程序的一小部分,用于将文件 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 次,但它没有读取我的输入文件。

最佳答案

您需要检查文件是否已打开以及输入是否已读取。如果文件提前结束,您还需要停止阅读。

#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;
}

关于c - 我想扫描 txt 文件并将这些数字保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50617385/

相关文章:

C++ sscanf 显示意外行为

c - c中(0,1)的随机数

JavaScript 切换按钮不会更改 document.load 上的状态

java - Java 中的数组和文件

使用用户定义的数组大小查找数组的众数的 C 程序返回意外结果

c - scanf 接受 int 但仅在输入另一个 char/int 并按 enter 后才继续执行

c - PPM扫描和打印

c - 格式化文件中的数据;

c - 选择不工作的 Unix C

比较两个 char[32]