【问题标题】:Expected expression before char in CC中char之前的预期表达式
【发布时间】:2020-04-16 00:49:08
【问题描述】:

我正在做一个单词搜索程序,并且不断收到相同的错误,这并没有给我提供太多关于什么是错误的信息。具体来说就是这样...

wordSearch.c:38:32: error: expected
  expression

returnWord = (char *) strstr(char const *sentence, char const *phrase); ^
^
这可能是什么?

【问题讨论】:

  • 如果 returnWord 是 char* 那么你需要转换为 (char*)
  • @Riad 为什么需要演员阵容?
  • 不知道 returnWord 变量。如果是字符串则可以直接使用。但他写成 char * 没有括号......可能会导致错误。
  • @Riad 这不是 C++。 1)没有string类型,2)语法错误,因为OP在调用中也使用了其他地方的类型,这表明OP的函数调用语法错误。
  • 将括号添加到 (char*)

标签: c function-call


【解决方案1】:

returnWord = char *strstr(const char *sentence, const char *phrase);

不是你调用函数的方式。去掉返回类型,直接使用

returnWord = strstr(sentence, phrase);

假设 sentencephrase 是变量已定义并具有适当的值。

【讨论】:

  • 尝试此操作时出现分段错误 11
  • @Sourav Ghosh 指出了明显的语法错误是正确的,如果您有分段错误,我建议您在将句子和短语变量的值传递给 strstr() 函数之前检查它们的值。如果它们为空,只需从 wordSearch 函数返回。即使在那之后它没有被解决,你需要用“-g”标志再次编译它并在 GDB 上运行它。
【解决方案2】:

根据图片,strstr 似乎有问题。这是有道理的,因为您传递参数的方式。 strstr 需要两个 const char * 参数,但是您错误地转换了它们。此外,由于strstr 已经返回char *,因此无需强制转换。因此,第 38 行应该是returnword = strstr((const char *) sentence, (const char *) phrase);

【讨论】:

  • 在原帖中加入wordsearch.c程序
  • 啊好吧,我加了一张图片
猜你喜欢
  • 2021-06-06
  • 2013-10-03
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
相关资源
最近更新 更多