字符串的定义和与初始化

 

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

 

习题:

版权声明:本文为博主原创文章,未经博主允许不得转载。