字符串函数(day11)

使用存储区的地址作为返回值可以让调用
   函数使用被调用函数的存储区
这种时候被调用函数需要提供一个指针类型
    的存储区记录作为返回值的地址数据
不可以把非静态局部变量的地址作为返回值
   使用

C语言里的文字信息必须记录在一组连续
    的字符类型存储区里
所有文字信息必须以''字符做结尾,这个
   字符的ASCII码就是数字0
符合以上两个特征的内容可以用来在C语言
   程序里表示文字信息,它们叫做字符串
字符串里''字符前面的部分是有效字符
所有字符串都可以采用字符类型指针表示

字符串字面值是表示字符串的一种方法,
    用两个双引号中间包含的一组字符
    表示字符串字面值(例如"dsg","^*&*@"等)
编译器在编译的时候会自动在字符串字面值的
    末尾追加''字符
编译器会把字符串字面值替换成第一个字符
    所在存储区的地址
字符串字面值的内容在程序执行过程中不
    可以改变
程序里内容一样的字符串字面值是同一个
多个并列的字符串字面值会被合并成一个

字符数组也可以用来记录字符串
只有包含''字符的字符数组才可以当作
    字符串使用
可以使用字符串字面值对字符数组进行初始化,
    编译器会把字符串字面值里的''字符
    初始化到字符数组里
字符数组里字符串内容可以修改

在printf函数调用语句里使用%s做占位符可以
    把字符串里所有有效字符显示在屏幕上

不可以使用操作符对字符串进行操作,应该
    使用一组标准函数
为了使用这组标准函数需要包含string.h头文件
strlen           用来统计字符串里有效字符
                 的个数
                 和sizeof关键字完全不同
strcat           用来把两个字符串合并成
                 一个字符串
                 这个函数有可能修改不属于
                 数组的存储区,这会造成
                 严重错误
strncat          功能和strcat函数类似
                 这个函数可以避免strcat的
                 错误
strcmp           用来比较两个字符串的大小
                 根据字符ASCII码比较两个
                 字符串的大小
                 返回值是0表示两个字符串
                 一样大
                 返回值是1表示第一个参数
                 代表的字符串大
                 返回值是-1表示第二个参数
                 代表的字符串大
strncmp          用来比较两个字符串前n个
                 字符的大小
strcpy           用来把一个字符串的内容
                 复制到字符数组里
                 这个函数也可能修改不
                    属于数组的存储区,
                    这会造成严重错误
strncpy          功能和strcpy类似
                 只复制字符串里前n个字符,
                    这样可以避免问题
                 有可能不复制''字符
memset           用来把字符数组里多个
                  连续的字符类型存储区
                  内容设置成同一个字符
strstr          从一个大字符串里查找
                  小字符串的位置
                如果找不到就返回NULL

以下两个函数不需要包含string.h头文件
sprintf   把多个数字按照格式拼凑成
            字符串并记录到字符数组里
sscanf    从字符串里获得多个数字并记录
            到存储区里

以下两个函数需要包含stdlib.h头文件
这两个函数可以把字符串里的数字转换
   成数字类型
atoi       这个函数可以把字符串里开头
            的整数部分转换成整数类型
atof       这个函数可以把字符串里开头
            的浮点数部分转换成双精度
            浮点类型

在scanf函数调用语句里使用%s做占位符
    可以把用户在键盘上输入的字符串记录
    到字符数组里
这种方法有可能造成严重问题

fgets函数也可以把键盘上输入的字符串
    记录到字符数组里
这个函数可以避免scanf函数的问题
这个函数需要三个参数
1.数组名称
2.数组里的存储区个数
3.用stdin表示键盘

如果用户输入的内容不能把数组充满就把
    用户最后输入的回车当作'
'字符也
    放到字符数组里
如果用户输入的内容超过数组的范围就把
    多余的部分留在输入缓冲区里等
    下次读

在每次使用fgets函数从键盘得到字符串以后
    都应该把可能存在的多余数据清理掉
清理多余数据的语句应该放在分支里,分支
    要保证输入缓冲区里有多余数据的时候
    才进行清理
原文地址:https://www.cnblogs.com/Kernel001/p/7735179.html