C fscanf格式化

时间:2014-07-27 03:13:31

标签: c scanf

我对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 个答案:

答案 0 :(得分:2)

%s中使用fscanf格式时,预期参数为char*,可以保存从流中读取的字符。这解释了警告信息。

在您的情况下,&word&word[0]具有相同的数值。然而,这并非总是如此。例如,如果您有:

char* word = malloc(20);

然后,数值&word不等于&word[0]的数值。编译器没有负责处理这些区别。它只是期望char*作为参数。