我希望能够使用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;
}
我有什么方法可以做到这一点?
答案 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;
}