c语言常见字符串,strtok 函数的使用

c语言常见字符串函数使用及实现

一、c的常见字符串函数:
头文件 #include<string.h>
1. 求串长:strlen(str) 求str长度(注意不包含‘\0’)
2. 串比较:strcmp(str1,str2)两串相同返回0,相反返回1。
3. 串复制:strcpy(str1, str2)将str2的内容复制给串1(包含’\0’)
4. 串连接:strcat(str1, str2)将str2接到str1后面
5. 找串中的字符:strstr( str, ch) ch是char类型,从str中找到ch这个变量当中的字符,并返回该字符的地址。
6. 分割串:strtok(str," ,.") ,str 被 ,. 分割成几个不同的部分。’’ ''中的内容可以是各种不同的字符,包括大小写字母和标点符号。
(但其实以上几个函数在使用的时候是不安全的。为了增强程序的健壮性,c语言还有以下的几种库函数。)
7.strncpy(str1,str2,n) 从str2向str1复制n个字符包括加‘\0’
8.strncmp(str1,str2) 将str1和str2 的前n个字符进行比较
9.strncat(str1,str2) 将str2前n个字符连接到str1 的后面最后加上‘\0’
二、c常见字符串的使用及注意事项
这里我主要想和大家交流strtok()的使用,下面我就说下我对于strtok的使用体会。
strtok()使用(这里需要强调的是strtok(str," ,")的参数传递,我们知道它的作用是分割字符串,因此第一次传参我们一定是要传数组的首地址str,但是我们要将分割后的字符串全部打印出来就需要用到循环,而第二次以及后续的传参我们就不能传首地址了而是NULL。下面我会给大家进行一个正确和错误的演示)

char str1[] = "hello world,hello friend!";
	char *p = strtok(str1, " ,");//这里我们第一次传参,传的是首地址str1。""中的内容是分割标志
	while (NULL != p)            //这里我用的是空格和逗号
	{
    
    
		printf("%s\n", p);
		p = strtok(NULL, " ,"); // 第二次及后续传参我们需要传NULL,才可以打印分割后的不同的字符串
	}

在这里插入图片描述
可以看到字符串被空个和逗号分割成了四部分。而当我们使用下面这种方式(和上面的不同之处在于while循环当中strtok()传入的参数):

char str1[] = "hello world,hello friend!";
	char *p = strtok(str1, " ,");//这里我们第一次传参,传的是首地址str1。""中的内容是分割标志
	while (NULL != p)            //这里我用的是空格和逗号
	{
    
    
		printf("%s\n", p);
		p = strtok(str1, " ,"); // 这里我们在后面传参如果依旧是 str1 的话打印的始终是分割后的第一个字符串
	}

在这里插入图片描述
会出现死循环并一直打印hello。

猜你喜欢

转载自blog.csdn.net/weixin_50168448/article/details/109786591
今日推荐