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函数可以用来将字符串分割成若干个子字符串。它的使用方法如下:
- 引入头文件:#include <string.h>
- 声明函数:char* strtok(char* str, const char* delimiters)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语言的函数,用于将错误码转换为相应的错误信息字符串。它的使用方法如下:
-
导入头文件
#include <string.h>
-
调用
strerror
函数,并传入错误码作为参数。错误码通常是一个整数值,可以是C库函数的返回值或者全局变量errno
的值。 -
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
函数返回的错误信息字符串可能因平台而异,所以它的结果可能会在不同的系统下有所不同。