2

我正在使用 C。我在使用 fscanf 函数的指针时遇到问题。当我尝试这样做时:

int *x;
/* ... */
fscanf(file, "%d", x[i]);

我的编译器给我一个警告说“格式参数不是指针”并且代码没有运行(我收到一条消息说“Water.exe 已停止工作”)。如果我将 x 替换为 *x,它就无法编译……这只是语法问题吗?

4

2 回答 2

12

如果要读取单个整数,请执行以下操作:

int x;
fscanf(file, "%d", &x );

如果你愿意,你可以这样做来读取动态分配变量中的单个整数:

int *x = malloc(sizeof(int));
fscanf(file, "%d", x );

如果您想要一个整数数组,请执行以下操作:

int *x = malloc(sizeof(int) * DESIRED_ARRAY_SIZE);
fscanf(file, "%d", &x[i] );

%d需要一个指向 an 的指针int,但x[i]它是 an int,因此您需要使用 address-of 运算符(一元&)获取列表元素的地址。

于 2009-09-01T02:19:11.210 回答
8

您需要为结果分配一些空间。

int *x; // declares x

x = malloc( 600000 * sizeof(int) ) // and allocates space for it

for (int i = 0; i < 600000; ++i ) {
    fscanf(file, "%d", &x[i] ); // read into ith element of x
}
于 2009-09-01T02:08:28.823 回答