为什么我无法使用以下编程扫描文件中的元素?我可以使用while循环扫描元素。但是,我想将元素放在二维数组中,这就是我尝试使用for循环的原因。不幸的是,我无法做到这一点。这有什么特别的原因,或者我做错了什么。 下面给出的错误的屏幕截图。
#include <stdio.h>
#define ROW 3
#define COLUMN 12
#define SIZE 40
int main ()
{
int i ,j;
float sale[ROW][COLUMN];
FILE *fp;
fp = fopen("store.txt", "r");
if(fp == NULL)
{
printf("Error Opening File\n");
return 0;
}
for(i=0; i<ROW; i++)
{
for(j=0; j<COLUMN; j++)
{
fscanf(fp, "%.2f", &sale[i][j]);
printf("%.2f ", sale[i][j]);
}
printf("\n\n");
}
fclose(fp);
return 0;
}
元素
A 20000 15000 14000 14900 17800 12000 11500 11000 15700 18500 20400 31000
B 31900 17000 16700 17800 18800 22000 10500 11000 15890 17640 21750 32540
c 29000 17500 16600 14678 17970 12125 11576 12198 16700 19500 21400 31000
答案 0 :(得分:1)
您不能使用%Ld
,它无效。您应%ld
使用long int
或%Lf
使用long double
。
请在此处查看显示有效组合的完整表格:http://www.cplusplus.com/reference/cstdio/scanf/
另外,请记住检查函数的返回值,特别是fscanf
在没有您注意的情况下失败。
还要考虑初始化sale
数组。您显示的输出是由于未初始化的内存。
答案 1 :(得分:0)
我认为问题在于这个陈述。
fscanf(fp, "%.2f", &sale[i][j]);
在fsanf格式中,%。2f无效。在printf中没问题。 另外,你需要读取第一个char元素,否则,无法读取成功。 你可以这样做。
char buf[ROW];//for A B C
for(i=0,fscanf(fp,"%c",&buf[i]); i<ROW; i++)
{
for(j=0; j<COLUMN; j++)
{
fscanf(fp, "%f", &sale[i][j]);
printf("%.2f", sale[i][j]);
}
printf("\n\n");
}