c语言-C语言一个字符串的问题

作者:用户 来源:互联网 浏览:351 次 时间:2016-03-11 09:43:48

c语言char

c语言-C语言一个字符串的问题 - 摘要: C语言一个字符串的问题#include#includeintmain(){chars1[81]s2[81];scanf(""%s""s1);scanf(""%s""s2);char*find=NULL

问题描述

C语言一个字符串的问题

#include
#include
int main(){
char s1[81] s2[81];
scanf(""%s"" s1);
scanf(""%s"" s2);
char *find = NULL;
int len2 = (int)strlen(s2);
while ((find = strstr(s1 s2)) != NULL)
{
while ( *(find + len2) )
{
*find = *(find + len2);
find++;
}
*find = '';
}
puts(s1);
}

上面是关于s1中去除S2中的字符串 然后输出去除后的S1字符串.我看见别人这样做后可以成功得到结果 但是上面没有任何关于S1的操作.所以有疑问请教各位前辈1

解决方案

find就是s2在s1中出现的头的位置,第二个while里进行的是将s1中s2串后面的内容一个一个覆盖到原来s1中s2串的位置,
*就是去指针处的内容,覆盖完以后外层while里find=''n''就是就是把后面的尾巴截掉,然后输出就是s1去掉s2以后的了。

解决方案二:

怎么没有呢,strstr返回的就是s1的地址啊,在*find就是操作s1啊。

解决方案三:

strstr函数的作用是找出字符串s2在字符串s1中第一次出现的位置,并返回该位置的指针,然后把s2原来 位置的值赋为0,最后输出

解决方案四:

关键是 strstr 的用法,与返回值要理解

 int len2 = (int)strlen(s2);while ((find = strstr(s1 s2)) != NULL)    // strstr 在 s1 中查找 s2,返回指针的值是 s1 + n,与 s1 是指向同一内存区域 {    while ( *(find + len2) )                     // 找到的位置指针 + s2 的长度,即跳过 s2 将后面的内容复制到找到的位置处。完成去除 s2 的目的!    {    *find = *(find + len2);    find++;    }    *find = '';}puts(s1);
解决方案五:

C语言就是牛逼啊 完全看不懂

解决方案六:

C语言就是牛逼啊 完全看不懂

解决方案七:

说错了,find=''

【云栖快讯】新手小白必看!编程语言系列讲座火爆进行中,与行业资深专家一起学习Python、C++、JavaScript、Java!从入门到进阶  详情请点击
云栖社区(yq.aliyun.com)为您免费提供c语言-C语言一个字符串的问题相关信息,包括 c语言char 的信息 ,所有c语言-C语言一个字符串的问题相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_96023,您可以点击c语言-C语言一个字符串的问题-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备

热点导航