【发布时间】:2014-11-15 01:37:38
【问题描述】:
看在上帝的份上,这似乎是一段如此简单的代码,我就是不知道哪里出错了。
int count = 0;
for (int i = 0; i<10;i++){
if (chararray[i]=='\0' && i == 0){
cout << "Empty \n";
break;
}
if (chararray[i]!='\0') {
count = count ++;
}
}
cout << "Deleted " << count << "elements \n";
所以基本思想是它遍历数组,如果它是空的,则返回“Empty”,如果不是,则计算所有非空单元格并返回其中有多少。如果它有什么不同,我把它放在解构方法下。
通常它工作正常,它只是计数不正确。它要么全部计数,要么不计数。
更新!
谢谢大家!我用++count 删除了count = count++ 行,它显示的结果比以前更正确,但不是针对所有测试值(我保证不会再犯同样的错误)。事实上,我接受了使用 strlen 函数的建议,因为没有特别需要 0 来代替,好吧,什么都没有。它还使代码变得非常短。谢谢!
【问题讨论】:
-
chararray是如何填充的?您是否明确将任何字符设置为'\0'?也许部分数组未初始化? -
你看
size_t strnlen(const char *s, size_t maxlen)了吗? -
将
count = count ++;转换为简单的count++;。 -
你想做什么,这意味着“它要么全部计数要么不计数”
-
@Cyber 不,我没有明确地将任何数组值设置为 '\0',我搜索了 char 数组中空值的解决方案,这是提供的 NULL 等价物之一。
标签: c++ arrays isnullorempty