Error[8]: Undefined offset: 587, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

有关字符串查找和错误信息报告

文章目录

字符串查找(两个): strstr 1. 格式
char * strstr ( const char *str1, const char * str2);
2. 用法

在一个字符串中另外一个字符串是否存在

存在:返回子串第一次出现的位置

不存在:返回NULL

2.1 简单实现查找
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "bcd";
	char* p = strstr(arr1, arr2);
	if (p == NULL)
		prinrf("不存在\n");
	else
		printf("%s\n", p);
	return 0;
}
2.2 与替换的结合使用
int main ()
{
  char str[] ="This is a simple string";
  char * pch;
  pch = strstr (str,"simple");//查找
  strncpy (pch,"sample",6);//替换错误单词
  puts (str);
  return 0;
}
3. 模拟实现 3.1 实现函数

暴力求解

char* my_strstr(const char* str1, const char* str2)
{
	const char* s1 = str1;
	const char* s2 = str2;
	const char* p = str1;
    if(*str2==')'return
        ; str1while
	( *)p=
	{
		s1 ; p=
		s2 ; str2while
		( *!=s1 '&&'*!= '&&'s2(*==*)s1)++s2;++
		{
			s1;}
			s2if(
		*
		== ')'returns2 ( char*
			) ;//找到了++;p}return
		pNULL;
	//找不到子串
    } char*strstr
(

KMP算法 - B站:比特大博哥(难度较大)

3.2 实现函数2
const char  * ,const char * str1) char * = str2( 
{
        char *cp ) ;char *, str1*
        ; ifs1( !s2*
        ) return ((str2 char
            *)); while(str1*)
        = ;=cp(
       {
                s1 char cp*
                s2 ) ;while (* str2&&
                * && !s1 ( *s2 - *))s1++,s2++ ;
                        s1if( s2!*
                ) return()s2;
                        ++;cp}return
                cp(NULL
       )
        ;}intmain(
)
3.3 main函数
char []=
{
	"abcdefabcdef" arr1;char [ ]=
	"cde" arr2;char * =strstr
	(, p ) ;ifarr1( arr2==NULL
	) prinrfp ( "不存在\n")
		;elseprintf("%s\n"
	,
		);return0 p;}
	char *strtok
(
strtok 1. 格式
char * , const char * str) ; 
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
  • //把arr传给str,把@.传给sep sep constchar
    2. 使用
    =
    "@." ;//为了不修改原内容 pchar[]
    
    =
    "Jumpingtiger@007.com" arr;char[200]
    = buf0};strcpy{(,)
    ;//拷贝一份,保证chararr[]中值不变bufconstarrchar*=
    "@." ;strtok p(,)
    ;
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记(内部有const的记忆函数),strtok函数将保存它在字符串中的位置。
  • buf
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • p//第二次包括第二次以后的调用strtok

    ,
    );
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • intstrmain(
    2.1 演示所写代码使用函数的流程
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	
    	"@." ;char p * =strtok
    	(, str);printfbuf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );printf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );prinrf( p"%s\n",
    	);return0 str;}
    	int main(
    )
    
    2.2 for循环实现简化版本
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	"@." ;char p * =NULL
    	;for str ( =strtok
    	( ,str ) ;!=bufNULL p;= str strtok (NULL str , ))printf( p"%s\n",
    		);return0 str;}
    	char *strerror
    (
    
    错误信息报告:strerror 1. 格式
    int ) ; 
  • 把错误码转换成错误信息。
  • int errnum main(
    2. 使用

    返回错误码,所对应的错误信息。

    2.1 文件 *** 作
    * ;=fopen
    {
    	FILE( pFile"unexist.ent"
    	pFile , "r");//如果打开不了,就把错误码记录到错误码的变量中 //errno: Last error number - C语言提供的全局的错误变量if(
    	==
    	//errno - 必须包含的头文件#include 
    	NULL
    	) printfpFile ( "Error opening file unexist.ent: %s\n",
    	{
    		strerror()) ;returnerrno1;}
    		//读文件 fclose(
    	)
    	;
    	=NULLpFile;return
    	pFile 0 ;}
    	[+++] [+++][+++]
    [+++]
    
    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    Error[8]: Undefined offset: 588, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
    File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

    有关字符串查找和错误信息报告

    文章目录

    字符串查找(两个): strstr 1. 格式
    char * strstr ( const char *str1, const char * str2);
    
    2. 用法

    在一个字符串中另外一个字符串是否存在

    存在:返回子串第一次出现的位置

    不存在:返回NULL

    2.1 简单实现查找
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "bcd";
    	char* p = strstr(arr1, arr2);
    	if (p == NULL)
    		prinrf("不存在\n");
    	else
    		printf("%s\n", p);
    	return 0;
    }
    
    2.2 与替换的结合使用
    int main ()
    {
      char str[] ="This is a simple string";
      char * pch;
      pch = strstr (str,"simple");//查找
      strncpy (pch,"sample",6);//替换错误单词
      puts (str);
      return 0;
    }
    
    3. 模拟实现 3.1 实现函数

    暴力求解

    char* my_strstr(const char* str1, const char* str2)
    {
    	const char* s1 = str1;
    	const char* s2 = str2;
    	const char* p = str1;
        if(*str2==')'return
            ; str1while
    	( *)p=
    	{
    		s1 ; p=
    		s2 ; str2while
    		( *!=s1 '&&'*!= '&&'s2(*==*)s1)++s2;++
    		{
    			s1;}
    			s2if(
    		*
    		== ')'returns2 ( char*
    			) ;//找到了++;p}return
    		pNULL;
    	//找不到子串
        } char*strstr
    (
    

    KMP算法 - B站:比特大博哥(难度较大)

    3.2 实现函数2
    const char  * ,const char * str1) char * = str2( 
    {
            char *cp ) ;char *, str1*
            ; ifs1( !s2*
            ) return ((str2 char
                *)); while(str1*)
            = ;=cp(
           {
                    s1 char cp*
                    s2 ) ;while (* str2&&
                    * && !s1 ( *s2 - *))s1++,s2++ ;
                            s1if( s2!*
                    ) return()s2;
                            ++;cp}return
                    cp(NULL
           )
            ;}intmain(
    )
    
    3.3 main函数
    char []=
    {
    	"abcdefabcdef" arr1;char [ ]=
    	"cde" arr2;char * =strstr
    	(, p ) ;ifarr1( arr2==NULL
    	) prinrfp ( "不存在\n")
    		;elseprintf("%s\n"
    	,
    		);return0 p;}
    	char *strtok
    (
    
    strtok 1. 格式
    char * , const char * str) ; 
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
  • //把arr传给str,把@.传给sep sep constchar
    2. 使用
    =
    "@." ;//为了不修改原内容 pchar[]
    
    =
    "Jumpingtiger@007.com" arr;char[200]
    = buf0};strcpy{(,)
    ;//拷贝一份,保证chararr[]中值不变bufconstarrchar*=
    "@." ;strtok p(,)
    ;
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记(内部有const的记忆函数),strtok函数将保存它在字符串中的位置。
  • buf
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • p//第二次包括第二次以后的调用strtok

    ,
    );
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • intstrmain(
    2.1 演示所写代码使用函数的流程
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	
    	"@." ;char p * =strtok
    	(, str);printfbuf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );printf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );prinrf( p"%s\n",
    	);return0 str;}
    	int main(
    )
    
    2.2 for循环实现简化版本
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	"@." ;char p * =NULL
    	;for str ( =strtok
    	( ,str ) ;!=bufNULL p;= str strtok (NULL str , ))printf( p"%s\n",
    		);return0 str;}
    	char *strerror
    (
    
    错误信息报告:strerror 1. 格式
    int ) ; 
  • 把错误码转换成错误信息。
  • int errnum main(
    2. 使用

    返回错误码,所对应的错误信息。

    2.1 文件 *** 作
    * ;=fopen
    {
    	FILE( pFile"unexist.ent"
    	pFile , "r");//如果打开不了,就把错误码记录到错误码的变量中 //errno: Last error number - C语言提供的全局的错误变量if(
    	==
    	//errno - 必须包含的头文件#include 
    	NULL
    	) printfpFile ( "Error opening file unexist.ent: %s\n",
    	{
    		strerror()) ;returnerrno1;}
    		//读文件 fclose(
    	)
    	;
    	=NULLpFile;return
    	pFile 0 ;}
    	 [+++][+++]
    [+++]
    
    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    Error[8]: Undefined offset: 589, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
    File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

    有关字符串查找和错误信息报告

    文章目录

    字符串查找(两个): strstr 1. 格式
    char * strstr ( const char *str1, const char * str2);
    
    2. 用法

    在一个字符串中另外一个字符串是否存在

    存在:返回子串第一次出现的位置

    不存在:返回NULL

    2.1 简单实现查找
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "bcd";
    	char* p = strstr(arr1, arr2);
    	if (p == NULL)
    		prinrf("不存在\n");
    	else
    		printf("%s\n", p);
    	return 0;
    }
    
    2.2 与替换的结合使用
    int main ()
    {
      char str[] ="This is a simple string";
      char * pch;
      pch = strstr (str,"simple");//查找
      strncpy (pch,"sample",6);//替换错误单词
      puts (str);
      return 0;
    }
    
    3. 模拟实现 3.1 实现函数

    暴力求解

    char* my_strstr(const char* str1, const char* str2)
    {
    	const char* s1 = str1;
    	const char* s2 = str2;
    	const char* p = str1;
        if(*str2==')'return
            ; str1while
    	( *)p=
    	{
    		s1 ; p=
    		s2 ; str2while
    		( *!=s1 '&&'*!= '&&'s2(*==*)s1)++s2;++
    		{
    			s1;}
    			s2if(
    		*
    		== ')'returns2 ( char*
    			) ;//找到了++;p}return
    		pNULL;
    	//找不到子串
        } char*strstr
    (
    

    KMP算法 - B站:比特大博哥(难度较大)

    3.2 实现函数2
    const char  * ,const char * str1) char * = str2( 
    {
            char *cp ) ;char *, str1*
            ; ifs1( !s2*
            ) return ((str2 char
                *)); while(str1*)
            = ;=cp(
           {
                    s1 char cp*
                    s2 ) ;while (* str2&&
                    * && !s1 ( *s2 - *))s1++,s2++ ;
                            s1if( s2!*
                    ) return()s2;
                            ++;cp}return
                    cp(NULL
           )
            ;}intmain(
    )
    
    3.3 main函数
    char []=
    {
    	"abcdefabcdef" arr1;char [ ]=
    	"cde" arr2;char * =strstr
    	(, p ) ;ifarr1( arr2==NULL
    	) prinrfp ( "不存在\n")
    		;elseprintf("%s\n"
    	,
    		);return0 p;}
    	char *strtok
    (
    
    strtok 1. 格式
    char * , const char * str) ; 
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
  • //把arr传给str,把@.传给sep sep constchar
    2. 使用
    =
    "@." ;//为了不修改原内容 pchar[]
    
    =
    "Jumpingtiger@007.com" arr;char[200]
    = buf0};strcpy{(,)
    ;//拷贝一份,保证chararr[]中值不变bufconstarrchar*=
    "@." ;strtok p(,)
    ;
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记(内部有const的记忆函数),strtok函数将保存它在字符串中的位置。
  • buf
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • p//第二次包括第二次以后的调用strtok

    ,
    );
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • intstrmain(
    2.1 演示所写代码使用函数的流程
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	
    	"@." ;char p * =strtok
    	(, str);printfbuf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );printf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );prinrf( p"%s\n",
    	);return0 str;}
    	int main(
    )
    
    2.2 for循环实现简化版本
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	"@." ;char p * =NULL
    	;for str ( =strtok
    	( ,str ) ;!=bufNULL p;= str strtok (NULL str , ))printf( p"%s\n",
    		);return0 str;}
    	char *strerror
    (
    
    错误信息报告:strerror 1. 格式
    int ) ; 
  • 把错误码转换成错误信息。
  • int errnum main(
    2. 使用

    返回错误码,所对应的错误信息。

    2.1 文件 *** 作
    * ;=fopen
    {
    	FILE( pFile"unexist.ent"
    	pFile , "r");//如果打开不了,就把错误码记录到错误码的变量中 //errno: Last error number - C语言提供的全局的错误变量if(
    	==
    	//errno - 必须包含的头文件#include 
    	NULL
    	) printfpFile ( "Error opening file unexist.ent: %s\n",
    	{
    		strerror()) ;returnerrno1;}
    		//读文件 fclose(
    	)
    	;
    	=NULLpFile;return
    	pFile 0 ;}
    	 [+++]
    [+++]
    
    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    Error[8]: Undefined offset: 590, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
    File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

    有关字符串查找和错误信息报告

    文章目录

    字符串查找(两个): strstr 1. 格式
    char * strstr ( const char *str1, const char * str2);
    
    2. 用法

    在一个字符串中另外一个字符串是否存在

    存在:返回子串第一次出现的位置

    不存在:返回NULL

    2.1 简单实现查找
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "bcd";
    	char* p = strstr(arr1, arr2);
    	if (p == NULL)
    		prinrf("不存在\n");
    	else
    		printf("%s\n", p);
    	return 0;
    }
    
    2.2 与替换的结合使用
    int main ()
    {
      char str[] ="This is a simple string";
      char * pch;
      pch = strstr (str,"simple");//查找
      strncpy (pch,"sample",6);//替换错误单词
      puts (str);
      return 0;
    }
    
    3. 模拟实现 3.1 实现函数

    暴力求解

    char* my_strstr(const char* str1, const char* str2)
    {
    	const char* s1 = str1;
    	const char* s2 = str2;
    	const char* p = str1;
        if(*str2==')'return
            ; str1while
    	( *)p=
    	{
    		s1 ; p=
    		s2 ; str2while
    		( *!=s1 '&&'*!= '&&'s2(*==*)s1)++s2;++
    		{
    			s1;}
    			s2if(
    		*
    		== ')'returns2 ( char*
    			) ;//找到了++;p}return
    		pNULL;
    	//找不到子串
        } char*strstr
    (
    

    KMP算法 - B站:比特大博哥(难度较大)

    3.2 实现函数2
    const char  * ,const char * str1) char * = str2( 
    {
            char *cp ) ;char *, str1*
            ; ifs1( !s2*
            ) return ((str2 char
                *)); while(str1*)
            = ;=cp(
           {
                    s1 char cp*
                    s2 ) ;while (* str2&&
                    * && !s1 ( *s2 - *))s1++,s2++ ;
                            s1if( s2!*
                    ) return()s2;
                            ++;cp}return
                    cp(NULL
           )
            ;}intmain(
    )
    
    3.3 main函数
    char []=
    {
    	"abcdefabcdef" arr1;char [ ]=
    	"cde" arr2;char * =strstr
    	(, p ) ;ifarr1( arr2==NULL
    	) prinrfp ( "不存在\n")
    		;elseprintf("%s\n"
    	,
    		);return0 p;}
    	char *strtok
    (
    
    strtok 1. 格式
    char * , const char * str) ; 
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
  • //把arr传给str,把@.传给sep sep constchar
    2. 使用
    =
    "@." ;//为了不修改原内容 pchar[]
    
    =
    "Jumpingtiger@007.com" arr;char[200]
    = buf0};strcpy{(,)
    ;//拷贝一份,保证chararr[]中值不变bufconstarrchar*=
    "@." ;strtok p(,)
    ;
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记(内部有const的记忆函数),strtok函数将保存它在字符串中的位置。
  • buf
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • p//第二次包括第二次以后的调用strtok

    ,
    );
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • intstrmain(
    2.1 演示所写代码使用函数的流程
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	
    	"@." ;char p * =strtok
    	(, str);printfbuf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );printf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );prinrf( p"%s\n",
    	);return0 str;}
    	int main(
    )
    
    2.2 for循环实现简化版本
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	"@." ;char p * =NULL
    	;for str ( =strtok
    	( ,str ) ;!=bufNULL p;= str strtok (NULL str , ))printf( p"%s\n",
    		);return0 str;}
    	char *strerror
    (
    
    错误信息报告:strerror 1. 格式
    int ) ; 
  • 把错误码转换成错误信息。
  • int errnum main(
    2. 使用

    返回错误码,所对应的错误信息。

    2.1 文件 *** 作
    * ;=fopen
    {
    	FILE( pFile"unexist.ent"
    	pFile , "r");//如果打开不了,就把错误码记录到错误码的变量中 //errno: Last error number - C语言提供的全局的错误变量if(
    	==
    	//errno - 必须包含的头文件#include 
    	NULL
    	) printfpFile ( "Error opening file unexist.ent: %s\n",
    	{
    		strerror()) ;returnerrno1;}
    		//读文件 fclose(
    	)
    	;
    	=NULLpFile;return
    	pFile 0 ;}
    	 
    [+++]
    
    )
    File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
    File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
    File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
    字符函数第四dC语言中常见字符函数的用法解析之有关字符串查找和错误信息报告_C_内存溢出

    字符函数第四dC语言中常见字符函数的用法解析之有关字符串查找和错误信息报告

    字符函数第四dC语言中常见字符函数的用法解析之有关字符串查找和错误信息报告,第1张

    有关字符串查找和错误信息报告

    文章目录
    • 有关字符串查找和错误信息报告
    • 字符串查找(两个):
    • strstr
      • 1. 格式
      • 2. 用法
        • 2.1 简单实现查找
        • 2.2 与替换的结合使用
      • 3. 模拟实现
        • 3.1 实现函数
        • 3.2 实现函数2
        • 3.3 main函数
    • strtok
      • 1. 格式
      • 2. 使用
        • 2.1 演示所写代码使用函数的流程
        • 2.2 for循环实现简化版本
    • 错误信息报告:strerror
      • 1. 格式
      • 2. 使用
        • 2.1 文件 *** 作

    字符串查找(两个): strstr 1. 格式
    char * strstr ( const char *str1, const char * str2);
    
    • Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1.
    2. 用法

    在一个字符串中另外一个字符串是否存在

    存在:返回子串第一次出现的位置

    不存在:返回NULL

    2.1 简单实现查找
    int main()
    {
    	char arr1[] = "abcdef";
    	char arr2[] = "bcd";
    	char* p = strstr(arr1, arr2);
    	if (p == NULL)
    		prinrf("不存在\n");
    	else
    		printf("%s\n", p);
    	return 0;
    }
    
    2.2 与替换的结合使用
    int main ()
    {
      char str[] ="This is a simple string";
      char * pch;
      pch = strstr (str,"simple");//查找
      strncpy (pch,"sample",6);//替换错误单词
      puts (str);
      return 0;
    }
    
    3. 模拟实现 3.1 实现函数

    暴力求解

    char* my_strstr(const char* str1, const char* str2)
    {
    	const char* s1 = str1;
    	const char* s2 = str2;
    	const char* p = str1;
        if(*str2==')'return
            ; str1while
    	( *)p=
    	{
    		s1 ; p=
    		s2 ; str2while
    		( *!=s1 '&&'*!= '&&'s2(*==*)s1)++s2;++
    		{
    			s1;}
    			s2if(
    		*
    		== ')'returns2 ( char*
    			) ;//找到了++;p}return
    		pNULL;
    	//找不到子串
        } char*strstr
    (
    

    KMP算法 - B站:比特大博哥(难度较大)

    3.2 实现函数2
    const char  * ,const char * str1) char * = str2( 
    {
            char *cp ) ;char *, str1*
            ; ifs1( !s2*
            ) return ((str2 char
                *)); while(str1*)
            = ;=cp(
           {
                    s1 char cp*
                    s2 ) ;while (* str2&&
                    * && !s1 ( *s2 - *))s1++,s2++ ;
                            s1if( s2!*
                    ) return()s2;
                            ++;cp}return
                    cp(NULL
           )
            ;}intmain(
    )
    
    3.3 main函数
    char []=
    {
    	"abcdefabcdef" arr1;char [ ]=
    	"cde" arr2;char * =strstr
    	(, p ) ;ifarr1( arr2==NULL
    	) prinrfp ( "不存在\n")
    		;elseprintf("%s\n"
    	,
    		);return0 p;}
    	char *strtok
    (
    
    strtok 1. 格式
    char * , const char * str) ; 
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
  • //把arr传给str,把@.传给sep sep constchar
    2. 使用
      *
    =
    "@." ;//为了不修改原内容 pchar[]
    
    • strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。

      (注:strtok函数会改变被 *** 作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)

    =
    "Jumpingtiger@007.com" arr;char[200]
    = buf0};strcpy{(,)
    ;//拷贝一份,保证chararr[]中值不变bufconstarrchar*=
    "@." ;strtok p(,)
    ;
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记(内部有const的记忆函数),strtok函数将保存它在字符串中的位置。
  • buf
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • p//第二次包括第二次以后的调用strtok
      (

      NULL
    ,
    );
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。
  • intstrmain(
    2.1 演示所写代码使用函数的流程
      )
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	
    	"@." ;char p * =strtok
    	(, str);printfbuf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );printf( p"%s\n",
    	);=strtok str(NULL
    
    	str , );prinrf( p"%s\n",
    	);return0 str;}
    	int main(
    )
    
    2.2 for循环实现简化版本
    char []=
    {
    	"Jumpingtiger@007.com" arr;char [ 200]
    	= buf0}; //"Jumpingtiger@007.com" { strcpy (,)
    	;//拷贝一份,保证chararr[]中值不变bufconst arrchar*=
    	"@." ;char p * =NULL
    	;for str ( =strtok
    	( ,str ) ;!=bufNULL p;= str strtok (NULL str , ))printf( p"%s\n",
    		);return0 str;}
    	char *strerror
    (
    
    错误信息报告:strerror 1. 格式
    int ) ; 
  • 把错误码转换成错误信息。
  • int errnum main(
      )
    2. 使用

    返回错误码,所对应的错误信息。

    2.1 文件 *** 作
    * ;=fopen
    {
    	FILE( pFile"unexist.ent"
    	pFile , "r");//如果打开不了,就把错误码记录到错误码的变量中 //errno: Last error number - C语言提供的全局的错误变量if(
    	==
    	//errno - 必须包含的头文件#include 
    	NULL
    	) printfpFile ( "Error opening file unexist.ent: %s\n",
    	{
    		strerror()) ;returnerrno1;}
    		//读文件 fclose(
    	)
    	;
    	=NULLpFile;return
    	pFile 0 ;}
    	 
    
    

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/langs/3002860.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-09-27
    下一篇 2022-09-27

    发表评论

    登录后才能评论

    评论列表(0条)

    保存