Я хочу сканировать через текстовый файл и сохранить эти числа в массиве - PullRequest
0 голосов
/ 31 мая 2018

Это небольшая часть программы, которую я написал, чтобы сохранить содержимое файла 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 раз.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вам необходимо проверить, был ли файл открыт и прочитан ли ввод.Вам также необходимо прекратить чтение, если файл заканчивается преждевременно.

#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;
}
0 голосов
/ 31 мая 2018

Сначала Проверьте ошибку, правильно ли открыт файл.

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.
 }
...