【问题标题】:expected expression/statement before [closed][关闭]之前的预期表达式/语句
【发布时间】:2016-05-16 13:43:41
【问题描述】:

对于下面的代码摘录的第三行,我不断收到上述错误:

    while(getline(line, MAXLINE) > 0) {
        lineno++;
        if(strstr(line, *argv) != NULL) != except) {

编译时会抛出两个错误。 一个是 '!=' 标记之前的预期表达式 其次是“')'标记之前的预期语句

作为一个新手程序员,我不太确定从这里开始。我已经尝试查看有关此错误的类似问题,但似乎没有一个可以解决我的问题。任何/所有帮助将不胜感激!

显然,这里有一种提出“聪明”问题的方法。任何/所有帮助将不胜感激!

【问题讨论】:

  • if( (strstr(line, *argv) != NULL) != except)
  • 您在一个 if 语句中有两个条件 !=。确定您想要实现的目标,并进行相应的修改。
  • 这个问题是由无法再复制的问题或简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。这通常可以通过在发布之前确定并仔细检查重现问题所需的最短程序来避免。
  • 你要么想要一个更聪明的编辑器,要么只是养成计算左括号和右括号的习惯,括号调整它们直到它们匹配。

标签: c compiler-errors


【解决方案1】:

if(strstr(line, *argv) != NULL) != except) 行中缺少括号 (

【讨论】:

  • 小糟糕,这些是braces: '{' and '}' 问题是parens '(' and ')' 的开/关不平衡。
【解决方案2】:

关于这一行:

if(strstr(line, *argv) != NULL) != except) {

语法错误。

一般情况下,左括号的数量“(”必须与右括号的数量“)”匹配

修正后的行是:

if(  (strstr(line, *argv) != NULL) != except) {
  ^  ^      ^           ^        ^          ^
  +1 +2     +3          -3       -2         -1

然而,这不是唯一的问题:

函数原型:getline() 有三个参数:

ssize_t getline(char **lineptr, size_t *n, FILE *stream); 

所以这一行:

while(getline(line, MAXLINE) > 0) {

不编译!

编译时,启用所有警告,然后修复这些警告。

【讨论】:

  • 感谢您的 cmets/answer @Jean-Baptiste Yunès。这只是缺少括号的情况。以为我已经计算了 openinhg 和 clsoing 大括号。但是,猜猜人的眼睛只能看到他们想看到的。
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2011-07-07
相关资源
最近更新 更多