第九章:字符串、字符和字节

来源:互联网 发布:大数据对学生的影响 编辑:程序博客网 时间:2024/06/11 16:26

日常使用我们都知道:利用字符数组或者指向字符的指针去存储字符串。这里把一些使用的注意事项罗列出来以便以后回顾

1、首先strlen函数返回的是一个size_t类型的值,是无符号数,所以如果比较大小

strlen(x)>=strlen(y)是可以的,但是strlen(x)-strlen(y)>=0,这基本上都是成立的,无符号数相减永远大于等于0。所以不能对strlen做这样的比较

比如strlen(x)>=10可以,strlen(x)-10>=0这非常没有意义  一样的道理。

2、strcpy函数

原型 char* strcpy(char* dst,char const* src);

如果参数dst与src重叠,结果是未定义的。如果dst长于src赋值完以后加上\0表示终止。如果小于,那么就会赋值到这个数组大小之外,占用后面的内存空间。所以要对目标数组的长度进行判断。

strcat也是一样,把字符串连接,加到dst后面,要求可以容纳所有字符串。

字符串比较strcmp(s1,s2)有返回值,如果s1<s2返回负数,相等返回0,大于返回正数。

strncpy,strcat,strncmp均是能限制长度的函数

原型:char*  strncpy(char* dst,char const* src,size_t len);

第三个参数就表示长度,就是向dst写入len个字符,如果src长度小于len,赋值完以后,dst后面补\0到len长度,如果大于len,则赋值len个,结果不会以null结尾

strncat是最多从src复制len个字符到目标数组后面,最后加一个null,不管空间够不够。

strncmp就是比较前len个字符。

3、字符串查找函数

char* strchr(char const* str,int ch);第一次出现ch的地方

strrchr,最后一次

strpbrk则是查找多个字符某一个第一次出现在str中的位置。

查找子串使用strstr.

4、查找标记

char* strtok(char* str,char const* sep);

在这个函数执行时会修改所处理的字符串,如果不能修改,拷贝一份然后把拷贝的传递给strtok

sep表示要查找的标记

使用如下:

#include <stdio.h>#include <string.h>voidprint_tokens( char *line ){staticcharwhitespace[] = " \t\f\r\v\n";char*token;for( token = strtok( line, whitespace );    token != NULL;    token = strtok( NULL, whitespace ) )printf( "Next token is %s\n", token );}
第一次调用时用字符串,之后用NULL一直取。

5、字符分类

字符分类时使用#include <ctype.h>库,可以保证可移植性。

6、内存操作


第三个参数均是要处理的字节数,和strn带头的不同,遇到NULL事不会停止的。

memmove和memcpy差不多,不过它的源和目标操作数可以重叠。

原创粉丝点击