c语言中关于字符串长度的问题
定义一个字符串charstr[]括号里不填那它的长度是由下一次赋值决定吗如果我写charstr[]{0}这样还可以继续赋值吗求各位不吝赐教谢谢...
定义一个字符串char str[] 括号里不填 那它的长度是由下一次赋值决定吗
如果我写char str[]{0} 这样还可以继续赋值吗
求各位不吝赐教 谢谢 展开
如果我写char str[]{0} 这样还可以继续赋值吗
求各位不吝赐教 谢谢 展开
8个回答
展开全部
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第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个问题一样。
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个问题一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误有两个!
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++编译通过,希望能帮助你
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++编译通过,希望能帮助你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询