字符串的定义和与初始化
1.用字符型数组初始化
char ch[12];
ch[0] = 'H';ch[1] = 'e';······
或者char ch[12] = {'H','e',······}
2.用字符串常量初始化
char ch1[14] = {"Programming!"};
//或
char ch1[14] = "Programming!"; //占14字节,结尾\0(结束标记符) \0还有一个
char ch2[ ] = {"Programming!"};
//或
char ch2[ ] = "Programming!"; //占13字节,结尾\0(结束标记符)
所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。
scanf:以空格结束,输入:abc 123 输出:abc
gets:以回车结束,并把回车符换成'\0'存储 输入:abc 123 输出:abc 123
puts:把'\0'自动换成'\n'。换行。
在一个字符数组中,当遇到空字符'\0'时,就表示字符串结束,由它前面的字符组成字符串。
char ch[ ] = {"Hello world!"}; //在内存中占13个字节,最后以'\0'结束
char ch[ ] = {'H','e','l','l','o',' ','w','o','r','l','d','!'}; //只占12字节
输入输出
%c逐字符输入输出
%s整体输入输出
puts遇到'\0'结束,并把'\0'转换成'\n'(自动换行)
gets把'\n'转换成结束符'\0'
指向字符串的指针
char *ps;
ps = "Programming!";
ps是指针变量,可以指向别的字符串
常用函数
strlen获取长度(串结束符不计算在内)
strcpy字符串复制(单个字符可以用=,只有字符串不能)
strcat字符串连接(接在第一个字符串尾部)
strcmp字符串比较(逐个比较对应下标的字符的ASCII值,全部相等返回0,左边大返回1,左边小返回-1)
strupr小写改成大写 -32
strlwr大写改成小写 +32
习题:
版权声明:本文为博主原创文章,未经博主允许不得转载。