我有一个数组,想要找到里面的元素数量。 我想要的是这个:
char array[100];
array[0] = 'a';
array[1] = 'b';
array[2] = 'c';
这种情况下的元素数量是3。 这就是我想要的。
我怎样才能找到这个价值?
答案 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()
将不会 工作