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

定义一个字符串char str[] 括号里不填 那它的长度是由下一次赋值决定吗
如果我写char str[]{0} 这样还可以继续赋值吗
求各位不吝赐教 谢谢

不,若不在[]填数字,就必须在初始化这个str,在等号右边写具体数据,有几个数据,编译器就自动在[]中填几了。所以char str[]{0}这样写是错误的,要写成char str[]={'a','b','c'};这样的形式,编译器就会认为[]中是3了。另,char型数组还可以char str[]="1234567";这样来定义,但这时[]中并不是7而是8,原来编译器把str作为字符串对待了,要在7后自动加一个结束符'\0'。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-07
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本回答被提问者采纳
第2个回答  2020-03-12
第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个问题一样。
第3个回答  2020-02-14
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
第4个回答  2008-05-05
错误有两个!
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++编译通过,希望能帮助你

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网