Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计数空字符单元C++_C++_Arrays_Isnullorempty - Fatal编程技术网

计数空字符单元C++

计数空字符单元C++,c++,arrays,isnullorempty,C++,Arrays,Isnullorempty,看在上帝的份上,这似乎是一段如此简单的代码,我就是不知道哪里出了错 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 ++; } } cou

看在上帝的份上,这似乎是一段如此简单的代码,我就是不知道哪里出了错

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";
基本思想是,它遍历数组,如果是空的,则返回空的,如果不是空的,则统计所有非空单元格,并返回其中有多少个。如果有什么不同的话,我把它放在解构主义方法下

一般来说,它很好用,只是不算正确。要么算全部,要么不算

更新

谢谢大家!!我用++计数删除了count=count++行,它显示了比以前更正确的结果,但不是所有的测试值,我保证不再犯同样的错误。事实上,我接受了使用strlen函数的建议,因为没有特别需要0来代替零。它还使代码变得越来越短。谢谢大家!

  if (chararray[i]=='\0' && i == 0){
此行查找空值,然后检查它是否位于索引0处 试试这个:

if(chararray[i]==`\0`){
在第一个空值上中断并停止计数

此外:

请更改此项:

 if (chararray[i]!='\0') {
      count = count ++;
这是一种未定义的行为,很可能无法按预期工作,或在以后某个时间中断

应该是:

if (chararray[i]!='\0') {
      count ++;
此行查找空值,然后检查它是否位于索引0处 试试这个:

if(chararray[i]==`\0`){
在第一个空值上中断并停止计数

此外:

请更改此项:

 if (chararray[i]!='\0') {
      count = count ++;
这是一种未定义的行为,很可能无法按预期工作,或在以后某个时间中断

应该是:

if (chararray[i]!='\0') {
      count ++;
假设chararray的类型为char[],则只需使用

假设chararray的类型为char[],则只需使用

一个问题:

count = count ++;
是未定义的行为:它可能会导致类似

tmp = count; // count == 0 
count++; 
count = tmp; // count == 0  
或者

尝试++计数;相反。

一个问题:

count = count ++;
是未定义的行为:它可能会导致类似

tmp = count; // count == 0 
count++; 
count = tmp; // count == 0  
或者


尝试++计数;相反。

您的问题标题为

计数空字符单元c++

但是,正如在代码片段中看到的,当数组的元素不等于“\0”时,计数会增加

if (chararray[i]!='\0') {
    count = count ++;
}
那么,您要计算的空字符单元是什么

考虑到这句话

    count = count ++;
具有未定义的行为,因为应用OperaTor++的副作用不是相对于左操作数赋值排序的

如果数组包含一个字符串,并且您想知道它是否为空以及字符串中有多少个字符,那么您应该使用标准的C函数strlen

如果数组不包含字符串,且值为“\0”的元素可以位于数组的任何位置,则tp count非零元素应使用标准算法std::count_,如果

比如说

#include <algorithm>
#include <functional>

//..

int n = std::count_if( chararray, chararray + 10, 
                       std::bind2nd( std::not_equal_to<char>(), '\0' ) );

你把你的问题命名为

计数空字符单元c++

但是,正如在代码片段中看到的,当数组的元素不等于“\0”时,计数会增加

if (chararray[i]!='\0') {
    count = count ++;
}
那么,您要计算的空字符单元是什么

考虑到这句话

    count = count ++;
具有未定义的行为,因为应用OperaTor++的副作用不是相对于左操作数赋值排序的

如果数组包含一个字符串,并且您想知道它是否为空以及字符串中有多少个字符,那么您应该使用标准的C函数strlen

如果数组不包含字符串,且值为“\0”的元素可以位于数组的任何位置,则tp count非零元素应使用标准算法std::count_,如果

比如说

#include <algorithm>
#include <functional>

//..

int n = std::count_if( chararray, chararray + 10, 
                       std::bind2nd( std::not_equal_to<char>(), '\0' ) );

chararray是如何被填充的?是否已将任何字符显式设置为“\0”?可能数组的某些部分未初始化?您是否查看过大小\u t strncont char*s、大小\u t maxlen?开关计数=计数++;对于简单的count++;。你想做什么?这意味着什么?要么算数,要么算数none@Cyber不,我没有显式地将任何数组值设置为“\0”,我在char数组中搜索空值的解决方案,这是提供的NULL的等价项之一。chararray是如何填充的?是否已将任何字符显式设置为“\0”?可能数组的某些部分未初始化?您是否查看过大小\u t strncont char*s、大小\u t maxlen?开关计数=计数++;对于简单的count++;。你想做什么?这意味着什么?要么算数,要么算数none@Cyber不,我没有显式地将任何数组值设置为“\0”,我在char数组中搜索空值的解决方案,这是提供的NULL的等效值之一。代码需要测试NULL char以停止计数,然后它应该检查计数是否为0,并相应地显示其消息。只需输入一个“如果”!count{std::cout代码需要测试null字符以停止计数,然后它应该检查count是否为0并相应地显示其消息。只需输入一个'if!count{std::cout