【问题标题】:Error invalid operands to binary expression in CC中二进制表达式的错误无效操作数
【发布时间】:2014-10-29 01:24:14
【问题描述】:

我正在尝试将标准输入中的一个位置移回。使用此代码:

fpos_t fPos;
fgetpos(stdin,&fPos);
fPos -= 1;
fsetpos(stdin,&fPos);

但我收到此错误:

 invalid operands to binary expression ('fpos_t'(aka '_G_fpos_t') and 'int')

但我的问题是为什么我会得到它?那么如何将 fPos 设置在后面一个位置呢?

谢谢。

【问题讨论】:

    标签: c operands


    【解决方案1】:

    fpos_t 是一个结构,而不是一个 int,它只用于 fgetpos 和 fsetpos 调用 - 你不应该直接操作它

    使用带有 SEEK_CUR 参数的 fseek() 来操纵当前流位置

    【讨论】:

    • @KhaledMohammad 那是因为交互式流(stdin 通常是)不可搜索。正如另一条评论所指出的,您可以使用 ungetc 返回一个字符(但只能返回一个字符)。
    • @Raymond Chen Bro 但代码在 Windows(CODEBLOCKS) 中运行良好,但我无法在 linux 中运行,我只是得到了那个错误。
    • @KhaledMohammad fpos_t 是不透明类型。无论是整数类型还是结构都取决于实现。不能保证在 fpos_t 上进行数学运算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多