C/C++字符串函数strtok()详解

C/C++字符串函数strtok()详解_第1张图片

函数作用

找到与delimiter相同的地方,将其截断,并返回str

函数理解

第一个参数str是待切割字符串

第二个参数delimiter是分隔符字符串

返回值为char * ,一般默认返回str的地址

strtok() 的原理是将查找到与delimiter相同的部分字符串的首位变成 ' \ 0 ',然后返回str的首元素地址,完成”截断“行为。

示例

	char arr3[] = "abcdefghijklmnopqrst";
	char arr4[] = "ghi";
	printf("%s\n", arr3);
	char* a = strtok(arr3, arr4);
	printf("%s\n", a);
//输出结果
//abcdefghijklmnopqrst
//abcdef

使用 strtok()  之前                                                    使用 strtok() 之后

C/C++字符串函数strtok()详解_第2张图片 C/C++字符串函数strtok()详解_第3张图片

若在使用过一次 strtok() 函数之后再次使用strtok() 函数,可不加参数

仅限一次,多了就输出NULL

原因:第一次使用完毕之后 strtok() 函数会保存使用过的地址

示例

	char arr3[] = "abcdefghijklmnopqrst";
	char arr4[] = "ghi";
	printf("%s\n", arr3);
	char* a = strtok(arr3, arr4);
	printf("%s\n", a);
	char* b = strtok(NULL, arr4);
	printf("%s\n", b);
	char* c = strtok(NULL, arr4);
	printf("%s\n", c);

//输出结果
//abcdefghijklmnopqrst
//abcdef
//jklmnopqrst
//(null)

若之前未使用过  strtok() 函数,不加第一个参数的话,编译器会崩溃的

	char* d = strtok(NULL, arr4);
	printf("%s\n", d);
//编译器崩溃了

你可能感兴趣的:(CPP,c++,c语言,开发语言)