我已经声明了一个像这样的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]
我不明白错误在说什么,因此我不知道从哪里开始纠正这个
答案 0 :(得分:1)
使用
fscanf(ifp, " %s", workingString);
永远不要将&
用于scanf()
或相关函数中的数组。
答案 1 :(得分:1)
这是因为您正在获取数组的地址,这意味着结果值的类型为“指向1032字符数组的指针”,但fscanf()
需要一个简单的“指向字符的指针”。两个指针的值将是相同的,但类型不同。
因此,您需要的是删除&
运算符,因为数组的名称衰减为指向第一个元素的指针:
fscanf(ifp, " %s", workingString);