c语言 strstr和strrpl库函数的作用是什么??

c语言 strstr和strrpl库函数的作用是什么??,第1张

标准C语言实现下列标准库函数,设计中不得使用其他库函数。

strstr库函数:

char

strstr(char

str1,char

str2);

字符串str1中,寻找字串str2,若找到返回找到的位置,否则返回NULL。

#include

<iostream>

char

strstr(const

char

str1,

const

char

str2);

char

strstr(const

char

str1,

const

char

str2)

{

char

s1,

s2;

assert

((str1

!=

(char

)0)

&&

(str2

!=

(char

)0));

/

空字符串是任务字符串的子字符串

/

if

(''

==

str2)

{

return

((char

)str1);

}

while

(str1)

{

s1

=

(char

)str1;

s2

=

(char

)str2;

while

((s1

==

s2)

&&

s1

&&

s2)

{

s1++;

s2++;

}

if

(''

==

s2)

{

return

((char

)str1);

}

str1++;

}

/

查找不成功,返回NULL

/

return

((char

)0);

}

int

main(int

argc,char

argv[])

{

char

a[20]="abcde";

char

b[20]="bc";

printf("%s

",

strstr(a,b));

system

("pause");

return

0;

}

strrpl库函数:

/

s

中的字符串

s1

替换成

s2

/

char

strrpl(char

s,

const

char

s1,

const

char

s2)

{

char

ptr;

while

(ptr

=

strstr(s,

s1))

/

如果在s中找到s1

/

{

memmove(ptr

+

strlen(s2)

,

ptr

+

strlen(s1),

strlen(ptr)

-

strlen(s1)

+

1);

memcpy(ptr,

&s2[0],

strlen(s2));

}

return

s;

}

这个函数是查找匹配的子字符串,如果没有找到完全匹配的就往回空

找到了las则返回它再前面一个串中的位置。

在file_names_in[0]中 ,查找字符串“las”,==0表示查找失败的情况。

char strstr( const char string, const char strCharSet );

wchar_t wcsstr( const wchar_t string, const wchar_t strCharSet );

unsigned char _mbsstr( const unsigned char string, const unsigned char strCharSet );

Return Value

Each of these functions returns a pointer to the first occurrence of strCharSet in string, or NULL if strCharSet does not appear in string If strCharSet points to a string of zero length, the function returns string

Parameters

string

Null-terminated string to search

strCharSet

Null-terminated string to search for

我的MSDN是英文的,string 是一个空终止的字符串,strCharSet 是要查找的字符串,返回一个指针,指向找到的第一个匹配结果,没找到则返回NULL,如果strCharSet指向一个长度为0的字符串,则返回string

这个明显是参数传递有问题

解决方法,对于字符串常量,可以简单地在字符串前面加一个L来解决,对于字符串变量,可以使用mbtowc函数把双字节字符转化成Unicode,具体 *** 作方式参见msdn。总之,以后在遇到这样的编译错误,应该能够反应到是不是字符编码的问题。

strstr(a, b)是字符串查找或者叫字符串匹配函数:在a中查找b,若找到则返回第一次出现的位置,若找不到则返回空指针。

例如:

char a[] = "hello world";

char b[] = "lo";

char p = strstr(a,b);//p指向的是字符串"lo world"

int len = strlen(p);//len值为字符串"lo world"的长度

int len2 = strlen(a) + 1 - len;//len2的值为字符串"hel"的长度+1,即为4

明白了没,printf("%d",strlen(a)+1-strlen(strstr(a,b)))的意思就是打印字符串b在字符串a中第一次出现位置之前的字符个数+1。

懒人应该用懒的办法,直接想办法把空格替换成'\0',替换成''0'之前把各个汉语拼音的第一个之母位置获取,就可以输出啦

//============非懒人办法====

#include<stringh>

void my_strcpy(chardst,const charsrc)

{

while(src != ' ' && src != '\0'

{

dst++ = src++;

}

dst = 0; //未作越界判断哦

}

void main()

{

const char s="tian shang ren jian";

char p[5][16];

const char p1;

for(int i=0,p1=s; i<4 && p1 != NULL; i++)

{

my_strcpy(p[i],p1);

printf("p[%d]=%s\n",i,p[i]);

p1 = strstr(p1," ");

if(p1) p1++;

}

}

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

原文地址: http://outofmemory.cn/langs/12155432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存