
取得的字符数组长度与使用的获取长度的方法有关,在C/C++中常用的获取字符串长度或者字符串数组长度的函数有sizeof()、strlen()。
sizeof()求出的是数组的总长度,而不是数组中存放的有意义的数据的个数。比如定义一个int型的数组:
int a[10] = {1, 2, 3, 4, 5};
只初始化了五个元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。换句话说,无法通过 sizeof(a)/sizeof(a[0]) 求出数组中有多少个有意义的数据。
用 sizeof 可以获得数据类型或变量在内存中所占的字节数。同样,用 sizeof 也可以获得整个数组在内存中所占的字节数。
因为数组中每个元素的类型都是一样的,在内存中所占的字节数都是相同的,所以总的字节数除以一个元素所占的字节数就是数组的长度。举例如下:
# include <stdioh>
int main(void){
int a[10] = {0};
printf("sizeof(a) = %d\n", sizeof(a));
return 0;
}
输出结果是:
sizeof(a) = 40
数组 a 是 int 型的,每个元素占 4 字节,所以长度为 10 的数组在内存中所占的字节数就是 40。
扩展资料:
strlen() 与 sizeof() 的区别
1、strlen(char)
函数求是字符串的实际长度,它可以用来获取动态实际字符数组的长度,是从开始到遇到第一个“\0”,如果只是定义没有赋予初始值,这个结果是不确定的,它会从数组的首地址开始一直找下去,直到遇到“\0”停止查找。
2、sizeof()
求所占总空间的字节数,静态的,跟初始状态字符数组的大小有关系,大小等于初始时字符数组的大小或者等于初始时字符数组的大小+1 。
在C++中,如果定义的是字符串数组的话,那么如果想获取数组的长度,只能用sizeof(数组名),而不能用strlen(str)。
int i = 0;
foreach (string[] item in listRows)
{
if (itemContains("指定的字符串"))
break;
i++;
}
//这就是你想要的
listRows[i]
二楼的代码,比我的更简洁优雅。
//如果有多个数组,都包含“指定的字符串”listRowsWhere(x=>xContains("指定的字符串"))ToList();
代码如下:
int AnalysisString(const char pStr){
if(NULL != pStr)
{
int nNum = 1;
while('\0' != pStr)
{
if(pStr >= '0' && pStr <= '9')
{
cout<<"字符串第"<<nNum++<<"位上的字符是0-9:"<<pStr-'0'<<endl;
}
else if((pStr >= 'a' && pStr <= 'z') || (pStr >= 'A' && pStr <= 'Z'))
{
cout<<"字符串第"<<nNum++<<"位上的字符是A-Z:"<<pStr<<endl;
}
else
{
cout<<"字符串第"<<nNum++<<"位上的字符是其他字符!"<<endl;
}
pStr++;
}
return 1;
}
return 0;
}
可以通过fgetc函数,将字符读取出来,并赋值到数组的对应位置上。
fgetc声明在stdioh中,其原型为
int fgetc(FILE fp);
功能为从打开的文件fp中读取一个字符,并返回。
当读取成功时,返回读取到的字符的ascii码值,否则返回EOF。
以下是逐个读取字符,存于字符数组,直到读完整个文件的例子。
#include <stdioh>int main()
{
char buf[10240];//定义一个足够大的字符数组存文件数据。
int c;//临时变量。
int cnt = 0; //标记目前读到几个字节。
FILE fp;//文件指针。
fp = fopen("intxt", "r"); //打开文件。
while(1)
{
c = fgetc(fp); //读一个字节。
if(c == EOF) break; //到文件尾,退出循环。
buf[cnt] = c;//赋值到字符数组中。
cnt ++;//读到的字符增加一个。
}
fclose(fp);//关闭文件。
return 0;
}
string[] values = new string[2] { "685:24::1627207:3707775;", "1363:66::122276080:96241;" };
values[0] = RegexReplace(values[0], @"^\d+(:\\d+)", "100");
values[1] = RegexReplace(values[0], @"^\d+(:\\d+)", "200");
foreach (string value in values)
ConsoleWriteLine(value);
ConsoleReadKey();
我再另一个帖子里回答了,先把这个结帖了再说。
char FILETAGSarray[]={"CO,","GTS","NTS"};
sizeof(FILETAGSarray)/sizeof(FILETAGSarray[0])
以上就是关于有一个字符数组,每一个元素都是字符串,如何获得每一个字符串的长度全部的内容,包括:有一个字符数组,每一个元素都是字符串,如何获得每一个字符串的长度、C#如何获取List<string[]> listRows中指定字符串数组、C怎么逐个读取一个字符串数组里的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)