【问题标题】:Compile error - reading in from file编译错误 - 从文件中读取
【发布时间】:2013-07-07 15:46:06
【问题描述】:

我已经声明了一个这样的 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]

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

【问题讨论】:

    标签: c string compilation scanf


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      使用

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

      您永远不应该将& 用于scanf() 或相关函数中的数组。

      【讨论】:

        猜你喜欢
        • 2017-03-21
        • 2020-11-25
        • 1970-01-01
        • 2014-12-11
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多