读取数据并分配给arays

时间:2016-04-21 00:00:29

标签: c

我希望能够使用scanf()读取此txt文件的每一行,并将每列分配给一个数组。

    220
    01 01 5.00 1.50
    02 01 4.00 3.00
    02 02 3.00 4.00
    03 01 4.50 3.00
    03 01 7.50 2.50
    03 01 6.00 0.50
    04 01 2.00 3.00
    04 02 2.00 3.00
    05 01 1.50 3.00
    07 01 5.00 1.00
    09 01 1.50 6.00
    -1

到目前为止我只有:

    #define MAXSIZE 100    

    int main(int argc, char *argv[]) {
        int i;
        int a, b;
        double c, d, e;
        int A[MAXSIZE], B[MAXSIZE];
        double C[MAXSIZE], D[MAXSIZE

        i = 0;
        scanf("%d %d %lf %lf", &a, &b, &c, &d);

        A[i] = a;
        B[i] = b;
        C[i] = b;
        D[i] = d;

        i+=1;
    }

我有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

确保文件的行数不超过MAXSIZE。

您可以使用fscanf代替scanf

如果您确实需要scanf,可以使用

将文件作为输入发送到您的程序
$ ./test < test.txt

此代码适用于文件和fscanf函数。

#include <stdio.h>

#define MAXSIZE 100    

int main(int argc, char *argv[]) {
    int i;
    int a, b;
    double c, d, e;
    int A[MAXSIZE], B[MAXSIZE];
    double C[MAXSIZE], D[MAXSIZE];

    FILE* fp = fopen("teste.txt", "r");

    if(fp == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }

    fscanf(fp, "%d", &i);// ignore first value
    i = 0;
    while (fscanf(fp, "%d %d %lf %lf", &a, &b, &c, &d) == 4) {
        A[i] = a;
        B[i] = b;
        C[i] = b;
        D[i] = d;

        i++;
        printf("%d %d %f %f\n", a, b, c, d);
    }
    return 0;
}