我希望能够使用 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;
}
有什么办法可以做到这一点吗?
最佳答案
确保文件的行数不超过 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;
}
关于c - 读取数据并分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757288/