我写了这段代码,但不知怎的,它不起作用。它应该在黑屏上显示这些数据:
代码有什么问题?
int main()
{
int arr[5][4], i, j, c;
FILE *inp;
inp = fopen("votes.txt", "r");
for (i = 0; i < 5; i++) {
for (j = 0; j < 4; j++)
{
c = fscanf(inp, "%d", &arr[i][j]);
arr[i][j] = c;
}
}
fclose(inp);
for (i = 0; i < 5; i++) {
for (j = 0; j < 4; j++) {
printf("%d\t", arr[i][j]);
printf("\n");
}
}
}
答案 0 :(得分:3)
fscanf
返回填充的元素数 - 而不是它填充到变量中的值。读取的值通过pointer-argument直接写入变量(即&arr[i][j]
)。
所以而不是
c=fscanf(inp,"%d",&arr[i][j]);
arr[i][j] = c;
你的代码应该是:
if (1 != fscanf(inp,"%d",&arr[i][j]))
{
// something is wrong - fscanf didn't read an int
... error handling ...
}