gpt4 book ai didi

c - fscanf--尝试扫描int的txt文件,fscanf只读取1s

转载 作者:行者123 更新时间:2023-11-30 15:11:46 24 4
gpt4 key购买 nike

我正在尝试使用 fscanf 读取包含 25 个整数的文件并将它们存储在内存中。然而,对于前 12 个值,fscanf 似乎始终显示为 1,而不是扫描文件中的实际 int。第 13 个值显示为 -1,然后下面代码中的 while 循环终止。知道为什么会这样吗?感谢您的帮助。

#include <stdio.h>
#include <stdlib.h>
#include "matrix.h"

#define ROWS 5
#define COLS 5

void load_file(FILE* file, int** p);

int main()
{


FILE* f1;
f1 = fopen("twenty-five-ints.txt", "r");
int p=0;
int* matrix = &p;
load_file(f1, &matrix);

}

void load_file(FILE* file, int** p) {

*p = malloc(25*sizeof(int));

int number = 0;
int i = 0;

while (fscanf(file, "%d", &number) != EOF) {
*(*p + i) = fscanf(file, "%d", &number);
printf("%d ", *(*p + i));
i++;
}
printf("\n");
}

while 循环内的 printf 语句打印出 12 个以空格分隔的数字,后跟 -1。

最佳答案

有两件事需要提及。

  1. 删除一个 fscanf() 调用。否则,您最终将丢失扫描的所有替代值。
  2. fscanf() 返回扫描值。如果找到 macth,它将扫描的值存储在提供的参数 (&number) 中。使用参数来获取扫描值。您可以利用返回值来检查对 fscanf() 的调用是否成功。

引用手册页,(强调我的)

The scanf() family of functions scans input according to format as described below. This format may contain conversion specifications; the results from such conversions, if any, are stored in the locations pointed to by the pointer arguments that follow format. [...]

关于c - fscanf--尝试扫描int的txt文件,fscanf只读取1s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com