C中数组内的元素数

时间:2017-10-16 20:52:22

标签: c arrays

我有一个数组,想要找到里面的元素数量。 我想要的是这个:

char array[100];

array[0] = 'a';
array[1] = 'b';
array[2] = 'c';

这种情况下的元素数量是3。 这就是我想要的。

我怎样才能找到这个价值?

2 个答案:

答案 0 :(得分:1)

  

在这种情况下,元素的数量为3.

在这种情况下,元素的数量仍为100.前三个被初始化,而其余值未设置。

如果您不打算在代码中将空字符视为有效,请使用零预先初始化数组,如下所示:

char array[100] = { 0 };

现在,您可以从索引零开始迭代array,并在到达第一个'\0'字符时停止,或者到达array的末尾,以先到者为准。

答案 1 :(得分:1)

如果你这样做

char array[100];
printf("%s", array); 

你得到abc。要查找char数组的元素,可以使用strlen()函数。

printf("%zu", strlen(array)); //would give you 3

strlen()在遇到\0 null元素之前返回其中包含值而不是垃圾内存的元素数。

关于strlen()功能,因为评论员问我为什么

采取http://www.cplusplus.com/reference/cstring/strlen/

获取字符串长度

  

C字符串的长度由终止确定   null-character:C字符串与字符数一样长   在字符串的开头和终止的空字符之间   (不包括终止空字符本身)。这应该   不要与保存字符串的数组的大小混淆。对于   例如:

char mystr[100]="test string"; 
  

定义一个大小为100个字符的字符数组,但是C   初始化mystr的字符串长度仅为11   字符。因此,sizeof(mystr)的计算结果为100,   strlen(mystr)返回11。

由于人们对null终止符感兴趣..

您可以使用memset()函数将所有元素设置为null。

char array[100];
memset(&array, '\0', 100);

当您声明元素时,可以将最后一个元素设置为空终止符。

char array[100];

int elemenNum = 0;

array[elemenNum] = 'a';
elemenNum++;
array[elemenNum] = 'b';
elemenNum++;
array[elemenNum] = 'c';
elemenNum++;
array[elemenNum] = '\0'; //Null terminator
elemenNum++;

或者您可以手动设置数字。但是你喜欢。

最后,正如李在评论中提到的那样,

  

当然,只有按顺序设置值0,1时,所有这一切才有效。   2,3 ...如果你设置#1,那么#2,然后是#5,那么#9,strlen()将不会   工作