字符串主要是了解标准库中的函数的用法及注意事项:
1、strlen(char const *str) 函数的返回值类型为size_t,这个类型是在头文件stddef.h中定义的,它是一个无符号整型类型,注意这点儿很重要,例如下面的判断语句将永远返回真:
if ( (strlen(str1) - strlen(str2)) > 0 ) /*不管str1与str2谁大这个表达式的值永远返回真,因为表达式返回无符号数,不可能存在负数*/
if ( (strlen(str1) - 10) > 0 ) /*这里不管str1多大函数永远返回真,因为表达式返回无符号数,不可能存在负数*/
2、char *strcpy( char *dst, char const *src ) /*如果参数src和dst在内存中出现重叠,其结果是未定义的,程序员必须保证目标字符数组的空间足以容纳需要复制的字符串,如果字符串比数组长,多余的字符仍被赋值,它们将覆盖原先存储于数组后面的内存空间的值,函数返回一个指向目标字符数组的指针*/
3、char *strcat( char *dst, char const *src ) /*该函数需要注意的问题和strcpy函数相同,函数返回一个执行目标字符数组的指针*/
4、int strcmp( char const *str1, char const *str2 ) /*这里需要注意的是这个函数的返回值与实际的字符串比较的结果刚好相反,如果字符串相等函数返回0*/
5、char *strncpy( char *dst, char const *src, size_t len ) /*这个函数需要注意的是如果需要复制的字符串比len的值小,则dst数组就会用额外的NUL补全len的长度,如果len的值小于需要赋值的字符串则它的结果将不会以NUL结束*/
6、char *strncat( char *dst, char const *src, size_t len ) /*这个函数和strncpy函数的区别除了功能上的差异外,它总是在结果字符串后面加一个NUL字符,而且他不会像strncpy函数那样当字符串不够长时以NUL字符填充*/
7、char *strncmp( char const *str1, char const * str2 ) /*该函数用法比较简单*/
8、char *strchr( char const *str, int ch ) /*函数在str中查找ch字符第一次出现的位置,并返回一个指向该位置的指针*/
9、char *strrchr( char const *str, int ch ) /*该函数和strchr函数一样,只是该函数返回ch字符最后一次在str字符串中出现的位置*/
10、char *strpbrk( char const *str, char const *group ) /*函数返回group字符串中任意字符第一次在str字符串中出现的位置*/
11、char *strstr( char const *str1, chat const *str2 ) /*函数返回在str1字符串中str2字符串第一次出现的位置*/
12、size_t strspn( char const *str, char const *group ) /*函数返回str字符串起始部分匹配group字符串中任意字符的个数*/
13、size_t strcspn( char const *str, char const *group ) /*该函数刚好和strspn函数相反*/
14、char *strtok( char *str, char const *sep ) /*查找标记函数,sep字符串定义分隔符的字符集合*/
此函数有一个比较特殊的地方:
如果函数的第一个参数不是NULL,函数将找到字符串的第一个标记,注意:同时函数将保存它在字符串中的位置。如果它的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始像前面一样的查找下一个标记,如果字符串内不存在更多的标记,则函数返回NULL指针。该函数的功能类似于excel表格里面的按字符分裂的功能。注意因为此函数有自动保存上一次处理后的位置,因此不可以使用它来同时解析两个字符串。
15、char *strerror( int error_number ) ,错误信息:当我们调用一些函数,请求操作系统执行某些操作时,如果出现错误,操作系统是通过这是外部的整型变量errno进行错误代码报告的。strerror函数把其中一个错误代码作为参数并返回一个指向用于描述错误的字符串指针。