c语言怎么计算带0的字符数组长度
8个回答
展开全部
strlen(a)得到的实际长度是8,因为里面有\,\056会被认为是转义字符,对应一个字符'.'。这个字符串的正确表示应为"1234\\056789"。'\\'就是想要的\了。具体看看C语言的转义字符规定吧。谭浩强的那本书上就有。
a[100]="1234\\056789",输出的的字符串就是1234\056789,strlen(a)得到的长度是11,不是10,因为\0是两个字符,你要字符串中间有空字符'\0'是不行的,因为这个在C语言中是字符串的结束标志。
当然你在a[100]这样的字符数组里面存多个字符串(也就是里面夹杂有'\0'这样的字符)是可以的,只是计算所有字符的长度就不是标准函数sizeof、strlen这些能做的了。自己想办法还是可以的,把你的具体需求说出来,可以讨论一下。
a[100]="1234\\056789",输出的的字符串就是1234\056789,strlen(a)得到的长度是11,不是10,因为\0是两个字符,你要字符串中间有空字符'\0'是不行的,因为这个在C语言中是字符串的结束标志。
当然你在a[100]这样的字符数组里面存多个字符串(也就是里面夹杂有'\0'这样的字符)是可以的,只是计算所有字符的长度就不是标准函数sizeof、strlen这些能做的了。自己想办法还是可以的,把你的具体需求说出来,可以讨论一下。
展开全部
你这种应用很少见到了。不过如果真要算,也可以,从最后开始找到非0的字符,代码如下:
#include<stdio.h>
int csize(char* str, int size)
{
char* pend = str + size - 1;
while (pend >= str && *pend == 0)
{
--pend;
}
return pend - str + 1;
}
void main()
{
char str[100] = "1234\00056789"; // \000是一个字符
printf("%d\n", csize(str, sizeof(str)));
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、在C语言中,可以通过库函数strlen来计算字符串的长度,也可以通过循环计数来求取字符串长度。
函数原型:unsigned int strlen(char *str);
功 能:统计字符串str中字符的个数,不包含'\0'
返 回 值:返回字符个数
2、用strlen函数实现:
char str[20];
int len; // 保存数组的长度
scanf("%s", str);
len = strlen(str); // 计算字符数组str的长度
注:需将头文件#include<string.h>添加进源文件中。
3、用循环来实现:
char str[20];
int len=0; // 保存数组的长度
scanf("%s", str);
while(str[len] != '\0') // 未检测到结束字符
{
len++; // 统计字符数组str的长度
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 sizeof(数组名) 即可得出数组长度了
追问
这样得到的是100,我想得到实际长度10
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
char a[100]="1234\056789";
int i=0;
for (i=0;i<sizeof(a);i++)
{
if('\0'==a[i]&&'\0'==a[i+1])
{
break;
}
}
i+=2;
printf("长度=%d\r\n",i);
return 0;
}
这样行不行?
int main()
{
char a[100]="1234\056789";
int i=0;
for (i=0;i<sizeof(a);i++)
{
if('\0'==a[i]&&'\0'==a[i+1])
{
break;
}
}
i+=2;
printf("长度=%d\r\n",i);
return 0;
}
这样行不行?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询