c语言中关于字符串长度的问题

定义一个字符串charstr[]括号里不填那它的长度是由下一次赋值决定吗如果我写charstr[]{0}这样还可以继续赋值吗求各位不吝赐教谢谢... 定义一个字符串char str[] 括号里不填 那它的长度是由下一次赋值决定吗
如果我写char str[]{0} 这样还可以继续赋值吗
求各位不吝赐教 谢谢
展开
 我来答
White_MouseYBZ
2018-07-05 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6354万
展开全部
不,若不在[]填数字,就必须在初始化这个str,在等号右边写具体数据,有几个数据,编译器就自动在[]中填几了。所以char str[]{0}这样写是错误的,要写成char str[]={'a','b','c'};这样的形式,编译器就会认为[]中是3了。另,char型数组还可以char str[]="1234567";这样来定义,但这时[]中并不是7而是8,原来编译器把str作为字符串对待了,要在7后自动加一个结束符'\0'。
幻形术
2020-08-07 · TA获得超过1261个赞
知道小有建树答主
回答量:994
采纳率:81%
帮助的人:252万
展开全部
char str[]; //这是错误的,没有初始化列表时必须指定数组长度。
char str[10]; //指定了长度为10,不过没有初始化,所以10个元素值是伪随机值
char str[10] = {1,2,3,4,5,6,7,8,9,10}; //指定了长度为10,对每个元素都初始化了
char str[10] = {1,2,3,4,5}; //指定了长度为10,显示初始化了前面几个元素,后面的元素默认为0
char str[] = {1,2,3,4,5,6,7,8,9,10}; //没有指定长度,但有初始化列表,数组长度由初始化列表元素个数决定,所以长度是10
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
璩楚华桥
2020-03-12 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:34%
帮助的人:762万
展开全部
第1个输出是8
10。sizeof运算符得到的是数组的占用字节的大小,在定义数组a的时候没有指明大小,编译器根据初始化的内容来决定a的大小,"abcdefg"是个字符串,连同表示字符串结束的'\0'共有8个字符,1个字符类型占用1个字节,所以sizeof(a)是8。在定义数组b的时候已经指明了大小,所以sizeof(b)是10。
第2个输出是5
20。strlen函数是计算字符串的长度,字符串以'\0'表示结束,所以strlen在遇到hello后面的'\0'时就会返回。sizeof跟第1个问题一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戈恒史乐
2020-02-14 · TA获得超过3670个赞
知道大有可为答主
回答量:2989
采纳率:32%
帮助的人:382万
展开全部
1.a
2.b
3.
\034
表示八进制34所代表的ascii码字符
4.\\
表示一个\
5.
\x79

表示
16进制79所代表的ascii码字符
所以长度为5

1.a
2.\045
ascii码为八进制45的字符
3.空格
4.0
5.4
6.5
7.\'
表示一个单引号
8.b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu_pu
2008-05-05 · TA获得超过411个赞
知道答主
回答量:130
采纳率:0%
帮助的人:0
展开全部
错误有两个!
1.char型的字符变量a只代表一个字符,不能代表一个字符串。
2.用scanf输入字符串时,出了个控制符要用%s外,后面的应是个地址。若a是个字符数组,应该用a,而不是&a。况且用scanf输入时不能输入空格。
你可以这样编:
#include<stdio.h>
#include<string.h>
void main()
{
char a[80],*p;
int n;
p=a;
gets(a);
for(n=0;*p!='\0';p++,n++);
printf("It's length is %d",n);
}
visual c++编译通过,希望能帮助你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式