首页 文章

C fscanf格式化

提问于
浏览
2

我对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 回答

  • 2

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

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

    char* word = malloc(20);
    

    那么,数值 &word 不等于 &word[0] 的数值 . 编译器没有负责处理这些区别 . 它只是期待 char* 作为论据 .

相关问题