一.表示字符串和字符串I/O
字符串是以空字符(\0)结尾的char类型数组。注意:如果char类型数组没有以\0结尾则不是一个字符串。
1.字符串字面量(字符串常量)
用双引号括起来的内容称为字符串字面量,也叫字符串常量。
字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被存储一次。
2.字符串数组和初始化
const char * pt1 = "Something is pointing at me.";
相当于
const char ar1[] = "Something is pointing at me.";
3.数组和指针
数组形式(ar1[])在计算机的内存中分配一个内含29个元素的数组。此时字符串有两个副本,一个是静态内存中的字符串常量,另一个是储存在ar1数组中的字符串。
指针形式(*pt1)也使得编译器为字符串在静态存储区域预留29个元素的空间。该变量指向该字符串中的首字符。
总结:初始化数组是把静态存储区中的字符串拷贝到数组中,而初始化指针只是把字符串的地址拷贝给指针。
4.数组和指针的区别
char heart [] = "I Love Tillie!";
const char * head = "I Love Tillie!";
①.数组是常量,指针是变量
②.指针表示法可以进行递增操作,数组表示法不可以
③.没有被const修饰的指针表示法可以修改字符串字面量,数组不可以修改原始字符串字面量。
二.字符串函数
常用函数strlen()、strcat()、strncmp()、strcpy()和strncpy()。
1.strlen()函数
strlen()函数用于统计字符串的长度。用法:strlen(text)
2.strcat()函数
该函数把第二个字符串的备份附加在第一个字符串的末尾,并把拼接后形成的新的字符串作为第一个字符串,第二个字符串不变。
3.strncat()函数
strcat函数无法检查第一个数组是否能容纳第二个字符串,如果分配给第一个数组的空间不够大,多出来的字符溢出到相邻存储单元时就会出现问题。
用strncat()函数的第三个函数指定了最大添加字符数。例如:strncat(bugs,addon,13)将把addon字符串的内容附加给bugs,加到第13个字符或者遇到空字符停止。
4.strcmp()函数
用于比较字符串内容是否相等
5.strncmp()函数
第三个参数可以指定比较到哪个位置
6.strcpy()和strncpy()函数
strcpy()函数相当于字符串赋值运算符。第一个参数是char *类型,可以从数组的任意位置开始,第二个参数是char *类型,用于被拷贝的字符串。
strncpy()函数更加安全,该函数的第3个参数指明了可拷贝的最大字符数。
7.sprintf()函数
将数据写入字符串中。