c/c++语言开发共享C语言字符数组回顾

赋值篇: Part1 错误引例*2: 1.不允许声明之后才对整个字符数组进行赋值,比如c6 2.除非声明时顺便赋值了,否则不允许不声明数组长度,比如c7 Part2: 1 char c1[]={'H','E','L','L','O'}; 2 char c2[]={'H','E','L','L','O …

赋值篇:


 part1      错误引例*2:

1     char c6[];//wrong  2     c6="hello";//wrong  3   4     char c7[];//wrong  5     c7[0]='h';//wrong  6     c7[1]='e';//wrong  7     c7[2]='l';//wrong  8     c7[3]='l';//wrong  9     c7[4]='o';//wrong

 
1.不允许声明之后才对整个字符数组进行赋值,比如c6
2.除非声明时顺便赋值了,否则不允许不声明数组长度,比如c7
 

part2:

1     char c1[]={'h','e','l','l','o'};  2     char c2[]={'h','e','l','l','o',''};  3     char c3[10]={'h','e','l','l','o',''};  4     printf("c1:%s  sizeofc1:%dn",c1,sizeof(c1));  5     printf("c2:%s  sizeofc2:%dn",c2,sizeof(c2));  6     printf("c3:%s  sizeofc3:%dn",c3,sizeof(c3));

C语言字符数组回顾

1.printf %s时,每次地址+1,直到找到’n’为止,所以c1会乱码

 


 part3:

1     char *c4="hello";  2     char *c5="hello";  3     char *c6;  4     c6="hello";  5     printf("c4:%s  sizeofc4:%dn",c4,sizeof(c4));  6     printf("c5:%s  sizeofc5:%dn",c5,sizeof(c5));  7     printf("c6:%s  sizeofc6:%dnn",c6,sizeof(c6));

C语言字符数组回顾

1.注意字符指针可以声明后赋值,与第一个c6对比
2.注意这里打印的size,因为打印的是字符串数组的首字地址size,所以size都是一样的

 


part4:

1     char c7[]="hello";  2     char c8[]="hello";

C语言字符数组回顾

1.注意用字符串常量赋值会自动补’’
2.注意就算你自己加了’’还是会给你自动加’’
 

part5:

 1     char c9[5];   2     c9[0]='h';    c9[1]='e';   3     c9[2]='l';    c9[3]='l';    c9[4]='o';   4    5     char c10[6];   6     c10[0]='h';    c10[1]='e';   7     c10[2]='l';    c10[3]='l';   8     c10[4]='o';    c10[5]='';   9     printf("c7:%s  sizeofc7:%dnn",c7,sizeof(c7));  10     printf("c9:%s  sizeofc9:%dnn",c9,sizeof(c9));  11     printf("c10:%s  sizeofc10:%dnn",c10,sizeof(c10));

C语言字符数组回顾

1.注意c9,因为printf %s时,每次地址+1,直到找到’n’为止,所以会把c10也一起打印了

 


part6      scanf输入:

    char a[10];      scanf("%s",a);      printf("%s",a);

假如像这样普通输入的话,遇到空格、换行都会使字符串赋值中断,一种解决方法是看有多少段,逐段赋值然后连到一起。另一种方法是gets()

1     char a[10];  2     gets(a);  3     puts(a);

1.gets()可以识别空格,直到换行符出现,舍弃换行符,并自动补’’
2.puts()将字符串输出后会自动换行
3. getchar()、putchar()则是可以存储空格和换行的字符输入输出函数

 

函数篇:


part1      strcpy(char * dest,char *sr):

1     char c11[6];  2     strcpy(c11,"hello");  3     printf("c11:%s  sizeofc11:%dnn",c11,sizeof(c11));

 C语言字符数组回顾
 
功能:复制
1.dest只能是数组名,且已经声明过长度,sr可以实字符串常量或数组名且最末尾必须是’n’
2.注意c11不可以不声明长度就开始复制
3.假如要用到指针,也必须使指针已经指向某个数组才能使用,比如这样
1     char *c11;  2     char temp[6];  3     c11=temp;  4     strcpy(c11,"hello");  5     printf("c11:%s  sizeofc11:%dnn",c11,sizeof(c11));

 

part2      strcat(char *dest,char *sr):

1     char c7[]="hello";  2     char c8[]="hello";  3     printf("c8:%s  sizeofc8:%dn",c8,sizeof(c8));  4     printf("c8+c7:%sn",strcat(c8,c7));  5     printf("c8:%s  sizeofc8:%dnn",c8,sizeof(c8));

C语言字符数组回顾

功能:把sr的内容复制到dest结尾处(覆盖’’) 

1.c8里有2个’n’,cat时扫描到第一个’n’即开始复制
2.strcpy和strcat都是以’’作为结束标识
 

 part3      strlen(char *str1):

1     char c3[10]={'h','e','l','l','o'};  2     printf("strlen(c3):%d   sizeof(c3):%d",strlen(c3),sizeof(c3));

C语言字符数组回顾

功能:求实际长度

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/604524.html

(0)
上一篇 2021年5月12日
下一篇 2021年5月12日

精彩推荐