C语言是怎么存储字符串的?末尾的尀0需要自己手动输入吗?

2024-12-04 15:06:27
推荐回答(4个)
回答1:

C语言中的字符串,应该说是指字符串常量,如:"hello", "how are u"等,这些常量字符串本身在末尾存有一个\0,因\0是不可见字符,所以,看不到。

可以把字符串存储到一个字符数组中,存储方法分为三种:

1、定义字符数组,用常量字符串进行初始化

char str1[10]="hello";      //sizeof(str1)=10
char str2[]="how are u" ;   //未指定数组大小,按初始化字符串实际大小开辟数组空间,sizeof(str2)=10 ; 9个字符+1个\0  通过此方法,可以验证常量字符串中含有\0

2、定义字符数组,不初始化,采用字符串赋值操作函数进行赋值

char str[100];
strcpy( str, "hello"); //字符串拷贝
sprintf(str, "%s world", "hello"); //格式化输入,得到hello world
以上函数会自动在字符串尾赋值字符串结束符

3、定义字符数组,不初始化,采用循环,逐位赋值字符,并在结束位置赋值\0

char str1[10];
char str2[]="hello" ;
int i,j;
for(i=0,j=0;str2[i]!='\0';i++ ) //遍历字符串str2
    if ( i%2 ) //只取偶数位
        str1[j++]=str2[i];
str1[j]='\0'; //手动赋值结束符

回答2:

c语言是用字符组数来存储字符串的。。比如字符“hello” 你可以定义一个char a[6] ;也可以动态申请空间。。。
2. 末尾的\0是不用自己输入的,编译器会自动帮你加上。。

%s 是属于字符串的格式控制符。。。所以%后面的字母肯定是要讲究的。。。比如整数的格式控制串是%d, float 的是%f, double 的是 %lf 等。。。

回答3:

有三种方法:一种是声明字符数组,如 char a【10】,这种声明方法最多能存储10个字符,如果通过键盘输入,如果超出10个字符长度,会自动截断,只存储10个,如果不足,则会在空位上补'\0',另一种是字符串指针 char *s;这种声明方法是不会限制多少个字符,因此可以给s任意赋值,如 s="string", s="akjfasgjaga"等,系统会自动在字符串的末尾加上'\0';最后一种方法是建立struct 类型,此种类型中包含有char成员,通过malloc或calloc函数来动态地添加长度(这种方法一次添加一个或一组struct类型的数据,此时只要你不手动输入,是不会有'\0'的)

%s 是用printf函数输出时,只是按照字符串输出的固定结构

回答4:

一个一个存储的 在字符数组里 \0不需要自己写 独到支付串末尾会自动形成\0 %s 是字符串。。。。。如printf("%s",a) 表示打印字符窜a中存储的内容 还有printf("%c",&a) 表示打印地址a 中内容。。。。