【发布时间】:2010-11-24 12:25:20
【问题描述】:
我正在使用 C。我在使用 fscanf 函数的指针时遇到问题。当我尝试这样做时:
int *x;
/* ... */
fscanf(file, "%d", x[i]);
我的编译器给我一个警告说“格式参数不是指针”并且代码没有运行(我收到一条消息说“Water.exe 已停止工作”)。如果我将 x 替换为 *x,它就无法编译……这只是语法问题吗?
【问题讨论】:
-
我怀疑“...”中正在发生一些重要的事情。你能向我们展示你能做到的最小程序的完整版本吗?也就是复制程序,尽量去掉,但还是报错。
-
另外在那个版本中,请说明你想做什么,周围有太多“不起作用”。
-
*x和x[i]都是int类型,而不是int *所期望的fscanf(file, "%d"...)类型。所以是的,这基本上是一个语法错误。假设你分配了x指向的足够空间,也就是说,在这种情况下你想写fscanf(file, "%d", &x[i])或等效的fscanf(file, "%d", x+i)。 -
@RBerteig - 这不是语法错误,因为
fscanf()是一个可变参数函数,所以在编译时没有类型检查。一个好的编译器可以执行编译时类型检查,但不是必须的。