C语言--“string.h”库的几个函数

头文件:#include

string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。

1,变量类型size_t

这是无符号整数类型,它是 sizeof 关键字的结果。

2,宏定义NULL

这个宏是一个空指针常量的值。

3,各种库函数

(1),strdup()

功能:将串拷贝到新建的位置处

用法:char * strdup(char *str);

strdup()函数原型:

strdup()主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和S不相干。strdup()函数复制一个字符串,使用完后记得删除在函数中动态申请的内存。strdup()函数的参数不能为NULL,否则报错。因为该函数包含了strlen()函数,而该函数参数不能是NULL。

(2) strtok()

strtok函数的作用是把字符串以规定的字符分割开

p = strtok(buf, "$");  
p为指针,buf也是指针,这句代码的意思就是把buf中的字符串以"$"为分隔符分割开来,分割出来的字符串保存到指针p中。

再次调用strtok函数时,把buf换成NULL,不需要再写buf。即:

p = strtok(NULL, "$");  

需要注意的是,strtok函数会把分割前的字符串破坏掉,即每次分割后,原来的字符串就会少掉一部分,完整性会被破坏。

strtok函数的分隔字符还可以是多个,不一定只为一个

p = strtok(buf, "$,");   

这句代码的意思是以"$"和","为分隔符分割buf中的字符串。每当遇到这两个字符其中一个都会分割,不是遇到"$,"两个字符连在一起才分割,记住只需要遇到其中一个字符就可以了

(3)getline()

ssize_t getline(char **linepter,size_t *n,FILE *stream);

getline函数可以获取文件中的一行数据。

返回类型ssize_t为有符号整形,其值为获取的字符数,文件结束则返回-1,包括换行符’\n’,但不包括字符串结束符’\0’。linepter用来存储获得的字符串,size_t为无符号整形表示linepter的字节数。当*linepter为空时函数则动态为其分配空间,注意要将size_t值赋0。当linepter的空间不足时,函数会通过realloc,重新分配更大的空间。stream为文件指针,用于读取文件。

举个例子,在Linux命令行输入一行数据,将其保存下来:

size_t line_size = 100;

char * line = (char*) malloc(sizeof(char)*line_size);

getline(&line, &line_size, stdin);(注意前两个参数的取地址符)





你可能感兴趣的:(C语言--“string.h”库的几个函数)