2.21字符串初始化
【注:本程序验证是使⽤vs2013版】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
int main(void){
/*
不推荐的字符串初始化⽅式
c语⾔是没有字符串类型的,可以通过单个字符数据模拟成字符串
c语⾔字符串,以字符串‘\0’,数字0结尾
*/
//1.不指定长度,也没有0结束符(不推荐这样使⽤)
char buf[] = { 'a', 'b', 'c' };
printf("strlen(buf):%d\n", strlen(buf));//实际的字符串长度,这个长度会根据实际字符个数,按照⼀定的规则,⾃动调节长度 printf("sizeof(buf):%d\n", sizeof(buf));//buf的长度
printf("buf = %s\n", buf);//尾部会有乱码,因为接收到结束符没有结束符
//2、指定长度,后⾯没有赋值的元素,⾃动补零
char buf2[50] = { 'a', 'b', 'c' };
printf("strlen(buf):%d\n", strlen(buf2));//实际的字符串长度
printf("sizeof(buf):%d\n", sizeof(buf2));/buf的长度
printf("buf2 = %s\n", buf2);
//3、不指定长度,所有元素赋值为0
char buf3[] = { 0 };
printf("strlen(buf):%d\n", strlen(buf3));
printf("sizeof(buf):%d\n", sizeof(buf3));
printf("buf3 = %s\n", buf3);
//4、数组越界,不可以这样使⽤
//char buf4[2] = {'1','2','3'};
//5、不指定长度的,正确的结束符
char buf5[] = { 'a', 'b', 'c', 0 };
printf("strlen(buf):%d\n", strlen(buf5));
printf("sizeof(buf):%d\n", sizeof(buf5));
printf("buf5 = %s\n", buf5);
char buf6[] = { 'a', 'b', 'c', '\0' };
printf("strlen(buf):%d\n", strlen(buf5));
printf("sizeof(buf):%d\n", sizeof(buf5));
printf("buf6 = %s\n", buf6);
/*
推荐的字符串初始化⽅式
使⽤双引号的字符串初始化⽅式,末尾会⾃动添0
strlen:测试字符串长度,不包括数字0,\0
sizeof:不指定数组长度:测试数组长度,包括数字0,\0,
指定数组长度:指定的长度
*/
char buf7[] = "asdqwdq";
printf("strlen(buf):%d\n", strlen(buf7));
printf("sizeof(buf):%d\n", sizeof(buf7));
//跟上边结果不⼀致
char buf8[100] = "asdqwdq";
printf("strlen(buf):%d\n", strlen(buf8));
printf("sizeof(buf):%d\n", sizeof(buf8));
//注意"012"就相当于 "\n";知道有这种情况就可以,这⾥换⾏符也占据⼀个字节长度char buf9[] = "a\012b";
printf("strlen(buf):%d\n", strlen(buf9));
printf("sizeof(buf):%d\n", sizeof(buf9));
printf("buf9 = %s\n", buf9);
/*⾯试题,问打印出的内容*/
char tmp[50] = { '1', 'a', 'b', '0', '7' };
char tmp2[50] = { '1', 'a', 'b', 0, '7' };
char tmp3[50] = { '1', 'a', 'b', '\0', '7' };字符串函数gets怎么重新定义
printf("tmp = %s\n", tmp);
printf("tmp2 = %s\n", tmp2);
printf("tmp3 = %s\n", tmp3);
printf("\n");
system("pause");
return0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论