我对C很新,我对这些代码有点麻烦:
char word[STRING_LEN];
while(num_words < ARRAY_SIZE && 1 == fscanf(infile, "%79s", &word))
当我尝试编译时,我收到警告:
format '%s' expects argument of type char *, but argument 3 has type
char (*)[80].
现在通过使用 &word[0]
来解决这个问题 . 现在,这些都不应该指向数组开头的地址吗?我在这里想念的是什么
干杯!
1 回答
在
fscanf
中使用%s
格式时,预期参数为char*
,可以保存从流中读取的字符 . 这解释了警告信息 .在您的情况下,
&word
具有与&word[0]
相同的数值 . 然而,这并非总是如此 . 例如,如果您有:那么,数值
&word
不等于&word[0]
的数值 . 编译器没有负责处理这些区别 . 它只是期待char*
作为论据 .