C语言是怎么存储字符串的?末尾的\0需要自己手动输入吗? C语言是不是字符串最后才会有\0,字符最后有吗?

www.zhiqu.org     时间: 2024-06-16

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'; //手动赋值结束符


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

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

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

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

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

c语言问题,在c语言中,字符结束符'\0'是怎样生成的?能不能从键盘上输入'\0'?~

'\0' 其实就是 0。代码里可以用 str[i] == 0 判断。可以用 str[i] = 0 这样赋值生成。

是字符串常量最后有一个结束符号。
所以,在变量初始化那里,
char x[ ]=“abcdefg”,把字符串常量赋值给数组,数组x元素个数就多了一个结束符号。
而y数组是按照字符赋初值的,所以y元素个数就是字符个数。
所以这里如果用字符串函数strlen获取长度,只有x能正常获取。


#吴崔亨# C语言怎样在文件中每行的末尾写入数据? -
(17132495095): 打开输入文件读;打开输出文件写, 用fgets读入每行 先截去末尾的回车换行,写到输出文件; 再向输出文件写添加的内容,别忘记换行 关闭输入文件,关闭输出文件 ============ cat somefile | sed s/$/appendtext/ 这样也许更简单

#吴崔亨# 输入字符串在C语言字符数组中储存的格式问题 -
(17132495095): 1、c中数组下标是从0开始的,所以你上面的两条语句中存放的状态应该是str[0] = 'a',str[1] = '\0',str[2]未知2、字符串结束标志就是'\0',空字符也是'\0',所以两者对应的ASCII值都为0x00,所谓空字符本身是没有任何意义的一个字符,只是在表示字符串的时候,起到结束标志的作用.在实际使用字符串的时候,我们是不需要去判断空字符的,只把它当做字符串结束符来处理的

#吴崔亨# c语言 字符串 是什么 -
(17132495095): 写多了 Java 代码,对 String 类 很是喜爱,可惜经典的 C 语言没有...最近在做程序过程中,发现对C语言字符串的处理很模糊,一会儿用数组,一会儿用指针,一会儿又引入 string.h...于是决定总结一下C语言中字符串的处理,一则作为...

#吴崔亨# 关于C语言数组字符0的存储问题
(17132495095): char a[ 5 ] = { 'a', 'b', 'c', 'd', '\0' }; 这个数组5个元素,最后一个就是存储它了.只是你输出看不到而已! char a[ 5 ] = 0; 这五个元素都会是0,也就是'\0'了.在内存里面看到的都是0, '0'和0一个是数字,一个是字符.'\0'等价于数字0在字符串里.

#吴崔亨# c语言怎么储存两个字符串 -
(17132495095): 实例程序如下,不明白就追吧!刚才看错题目了,如下调用void input_string(char str[]);函数,就可以存入空格,输入用回车结束!#include void input_string(char str[]); void main() { char ch,i,Astr[100],Bstr[100]; printf("请两个测试字符...

#吴崔亨# c语言字符串按位储存 -
(17132495095): #include <stdio.h> int main() { int i = 0; char a[10] = ""; printf("请输入字符串,例如abcd,按回车键结束:"); scanf("%s", a); printf("数组a[10]存储的元素存储字符为:\n"); for(i = 0; i < 10; i++) { if('\0' != a[i])/**有存储的数组元素才将它打印出来**/ printf("a[%d] = %c\n", i, a[i]); } return 0; }

#吴崔亨# C语言:在一个字符数组中先后存放多个字符串,是怎么存放,举例说明 -
(17132495095): #include <string.h> char a[80];//将"abcd"保存到a中 strcpy(a,"abcd");//输出a中的字符串 puts(a);//将"1234"保存到a中 strcpy(a,"1234);//输出a中的字符串 puts(a);

#吴崔亨# c语言如何保存字符串为txt文件 -
(17132495095): 使用fopen() fwrite() 等函数,详细可以参考c/c++标准库.下面是一个示例代码,向1.txt中写入20字节的字串. #include <stdio.h> int main() { char str[20] = "testtesttesttesttes"; FILE *fp = fopen("1.txt", "w+"); if (fp==0) { printf("can't open file\n"); return 0; } fwrite(str, sizeof(char)*20, 1, fp); fclose(fp); return 0; }

#吴崔亨# c语言中有没有字符串类型?如何存放和处理字符串? -
(17132495095): C语言用字符数组表示字符串,比如字符串"abcde",可以用数组a[6]表示:a[]的内容是'a','b','c','d','e','\0'

#吴崔亨# 怎样保存C程序运行的数据? -
(17132495095): 在硬盘上建一个文件,把结果输出到文件