1.字符串四的定义及输出方式
①定义
//1.
char ch1[5]={'a','b','c','d','e'}; //字符数组类比于整数数组
//2.
char ch2[5]="abcde"; //前两种需要知道其字符串长度,有时字符串太长不好计算长度
//3.
char ch3[]="abcdefghijklmnopqrst"; //第三种可以直接不写长度
//4.
char *ch4="abcdefghijklmnopqrst";
②输出方式
1.2前两种都可以是一种输出方式,只能利用循环一个一个输
for(int i=0;i<sizeof(ch2)/sizeof(ch2[0]);i++){
printf("%c ",ch2[i]);
}
3.4.后两种比较简单,直接使用占位符%s,这是因为后两者会在字符串末尾加上结束标志'\0',且长度会加一
printf("%s\n",ch4);
所以我们可以看出第四种比较方便,因此我们常用它,在对于指针的使用时要小心,因为操作不当容易造成段错误 sigment error
;
③字符串的存储方式
字符串会在末尾补上一个'\0',使得长度加一,普通的sizeof()函数不能使用,想要得到真正的长度用strlen();
例如:
char ch[]="abcd";
int len=sizeof(ch)/sizeof(ch[0]);
char ch1[128]="hello";
int len1=sizeof(ch1)/sizeof(ch1[0]);
printf("strlen ch=%d\n",strlen(ch));//ch的strlen=4
printf("strlen ch1=%d\n",strlen(ch1));//ch1的strlen=5
printf("len=%d,len1=%d\n",len,len1); //len=5,len1=128
关于sizeof和strlen的使用,一般存在的问题是在:①网络通信获取的消息是乱码 ②协议两端不匹配
- 总结strlen和sizeof:
strlen是计算有多少个字符,sizeof计算有多大的容量