不可以使用操作符操作字符串,应该使用一组标准函数
为了使用这些标准函数需要包含string.h头文件
strlen 统计字符串里有效字符的个数和sizeof不同
strcat 合并两个字符串这个函数有可能修改不属于数组的存储区,这会造成严重错误
strncat 这个函数的功能和strcat一样但是它可以避免strcat函数的问题
strcmp 比较两个字符串的大小,返回值是1表示前一个字符串大,返回值是0表示 --- 一样大,返回值是-1表示后一个字符串大
strncmp 只比较两个字符串的前n个字符
strcpy 把一个字符串复制到字符数组里这个函数有可能修改不属于数组的存储区,这 - 也会造成严重错误
strncpy 功能和strcpy类似,但是只复制字符串中前n个字符
memset 可以把字符数组中前n个存储区内容设置成同一个字符
strstr 可以在一个大字符串里查找某个小字符串的位置,如果前一个字符串里不包含
后一个字符串则返回值是NULL
以下两个字符串相关函数不需要包含string.h头文件
sprintf 把多个数字按照格式记录到字符数组里形成一个字符串
sscanf 按格式从字符串里获得数字并记录到存储区里
以下两个函数可以把字符串里的数字转换成数字类型
为了使用这两个函数需要包含stdlib.h头文件
atoi 可以把字符串里不带小数点的数字转换成整数类型
atof 可以把字符串里带小数点的数字转换成浮点类型
可以在scanf函数调用语句中使用%s作为占位符从键盘得到一个字符串并记录到一个字符数组里,采用这种方法会产生严重问题
fgets函数也可以从键盘得到字符串并记录到字符数组里
这个函数可以避免scanf函数的问题
这个函数需要三个参数
1.数组名称
2.数组里存储区的个数
3.用stdin表示键盘
如果输入的内容不足以把数组充满就把用户最后输入的换行字符也读入到数组里
如果输入内容超过数组能容纳的范围就把多余的数据留在输入缓冲区里等下次读取
每次使用fgets函数之后应该在一个分支里 清理输入缓冲区里可能存在的多余数据
指针数组里每个存储区是一个指针类型的存储区
字符指针数组包含多个字符类型的指针,每个指针可以代表一个字符串
字符指针数组可以用来代表多个相关字符串
二维字符数组也可以记录多个相关字符串
一般采用字符指针数组记录多个相关字符串
#define预处理指令可以用来定义宏
宏可以用来给数字起名字
定义宏的时候要把名称写在前面,把它所代表的数字写在后面
宏名称通常由大写英文字母构成
宏名称里不可以包含空格
用宏给数字起名字的时候不要使用赋值操作符
编译器会把程序中的所有宏名称替换成它所代表的数字,然后再进行其他处理
可以在编译命令中使用-D选项指定宏所代表的数字
如果程序中的一些数字在编写的时候无法确定,只有在编译的时候才能知道就可以用宏代表它们