0

我已经像这样声明了一个char数组......

char workingString[1032]

我正在用 fscanf 读入这个数组,就像这样......

fscanf(ifp, " %s", &workingString);

我在使用 fscanf 的特定代码行中收到此编译错误

warning; format '%s' expects argument of type 'char *', but argument 3 has type 'char (*)[1032]' [W-format]

我不明白错误在说什么,因此我不知道从哪里开始纠正这个

4

2 回答 2

1

利用

fscanf(ifp, " %s", workingString);

您永远不应该在 a或相关函数中使用& for 数组。scanf()

于 2013-07-07T15:47:41.187 回答
1

这是因为您正在获取数组的地址,这意味着结果值的类型为“指向 1032 个字符的数组的指针”,但fscanf()需要一个普通的“指向字符的指针”。两个指针的相同,但类型不同。

因此,您只需要删除&运算符,因为数组的名称会衰减为指向第一个元素的指针:

fscanf(ifp, " %s", workingString);
于 2013-07-07T15:50:07.360 回答