【C语言】strstr strtok strerror函数的使用和模拟实现

1.strstr的使用和模拟实现

使用方法:

strstr是一个在字符串中搜索子字符串的函数。

char *strstr(const char *haystack, const char *needle);

参数:

  • haystack:要搜索的字符串
  • needle:要搜索的子字符串

返回值:

  • 如果找到子字符串,返回指向第一次出现子字符串的位置的指针
  • 如果未找到子字符串,返回NULL

示例:

#include<stdio.h>
#include<assert.h>
int main()
{
	char arr1[] = { "hello,world" };
	char arr2[] = { "world" };
	char* p = strstr(arr1, arr2);
	int ret = p - arr1;
	if (p != NULL)
		printf("已早到字符串所在位置,%1d \n", ret);
	else
		printf("没有找到");
	return 0;
}

模拟实现:

#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* str1,const char* str2)
{
	assert(str1 && str2);
	char* crt = (char*)str1;
	char* s1;
	char* s2;
	if (!*str2)
		return((char*)str1);
	while (*crt)
	{
		s1 = crt;
		s2 = (char*)str2;
		while (*s1 && *s2 && !(*s1 - *s2))
		{
			s1++;
			s2++;
		}
		if (!*s2)
			return(crt);
		crt++;
	}
	return(NULL);
}
int main()
{
	char arr1[] = { "hello,world" };
	char arr2[] = { "world" };
	char* p = my_strstr(arr1, arr2);
	int ret = p - arr1;
	if (p != NULL)
		printf("已早到字符串所在位置,%1d \n", ret);
	else
		printf("没有找到");
	return 0;
}

2.strtok的使用方法

strtok函数可以用来将字符串分割成若干个子字符串。它的使用方法如下:

  1. 引入头文件:#include <string.h>
  2. 声明函数:char* strtok(char* str, const char* delimiters)3.
  3. 参数说明:
  • str:要分割的字符串。在第一次调用时传入字符串,之后传入NULL。
  • delimiters:分割字符串的分隔符。可以是一个字符串,也可以是一个字符。    

     4.返回值:

  • 如果找到了下一个子字符串,则返回指向该子字符串的指针。
  • 如果找不到下一个子字符串,则返回NULL。

     5.案例:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = { "hello,how are you?" };
	char arr2[] = { " ,?" };
	char* p1 = strtok(arr1, arr2);
	while (p1 != NULL)
	{
		printf("%s \n", p1);
		p1 = strtok(NULL, arr2);
	}
	return 0;
}

3.strerror的使用方法

strerror 是一个C语言的函数,用于将错误码转换为相应的错误信息字符串。它的使用方法如下:

  1. 导入头文件 #include <string.h>

  2. 调用 strerror 函数,并传入错误码作为参数。错误码通常是一个整数值,可以是C库函数的返回值或者全局变量 errno 的值。

  3. strerror 返回一个指向错误信息字符串的指针。你可以将这个指针赋值给一个字符数组或者直接打印出来。

下面是一个简单的示例代码:

#include <stdio.h>
#include <string.h>

int main() {
    int errnum = 2;  // 假设这是一个错误码
    char *errmsg = strerror(errnum);
    
    printf("Error message for error code %d: %s\n", errnum, errmsg);
    
    return 0;
}

Error message for error code 2: No such file or directory

在这个示例中,strerror 函数接收错误码 2,并将返回的错误信息字符串赋值给 errmsg,然后通过 printf 函数打印出来。

需要注意的是,strerror 函数返回的错误信息字符串可能因平台而异,所以它的结果可能会在不同的系统下有所不同。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值