【问题标题】:Error: Declaration of non-variable 'strlen' in 'for' loop initial declaration - C错误:在“for”循环初始声明中声明非变量“strlen”-C
【发布时间】:2016-10-14 19:07:22
【问题描述】:

标题是我的编译器(ubuntu 上的 geany)在我尝试编译时给我的确切错误。有问题的代码部分如下:

for(int q=strlen(stringA)-1;q>0;q--)
{
//do stuff
}

我已经设置了 C99 模式并且接受了 'for' 标头中变量的初始化。我所做的在 C 语言中是非法的吗?

【问题讨论】:

  • 缺少#include <string.h>? (顺便说一句,为什么要使用类型int?)
  • 好的,这真的让我很着迷,因为我在同一代码中多次使用 strlen 但编译器只给了我“警告”。现在可以了。
  • 你的意思是我应该使用short?当然,这是我想到的优化,但我通常会优化这种东西(非逻辑相关)。
  • 这个man page 显示了返回的内容:size_t strlen(const char *str);
  • ...但size_tunsigned 数据类型,因此测试q >= 0 的循环将是无限的。但是你不这样做 - 由于某种原因 q > 0 你不想要第零个元素。

标签: c for-loop compiler-errors c99 strlen


【解决方案1】:

我假设您缺少包含。试试:

#include <string.h>

【讨论】:

  • 我没有注意到它丢失的原因是我在问题的评论区写的。谢谢。
猜你喜欢
  • 2016-06-07
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多