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

问题描述

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=''

时间: 2024-10-04 13:57:27

c语言-C语言一个字符串的问题的相关文章

C语言实现输入一个字符串后打印出该字符串中字符的所有排列_C 语言

本文实例讲述了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,属于数学里的排列问题.是一个很实用的算法技巧.分享给大家供大家参考.具体实现方法如下: 例如输入字符串abc,则输出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. C语言实现代码如下: /* * Copyright (c) 2011 alexingcool. All Rights Reserved. */ #include <iostream> #include <al

c语言字符数组与字符串的使用详解_C 语言

1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串在c语言中,将字符串作为字符数组来处理.(c++中不是)在实际应用

c语言-一个字符串解析问题,如cmd1=str1&amp;amp;amp;cmd2=str2

问题描述 一个字符串解析问题,如cmd1=str1&cmd2=str2 使用C语言解析如上的字符串,如cmd1=str1&cmd2=str2,cmd的个数和顺序不定 解决方案 1楼大神的答案挺不错的,我的思考是先找到&符号,切割一个出一个cmd=value然后找=符号.因为cmd的个数和顺序不定,最好你把cmd切换为整型的数字,使用switch...case去赋值. 解决方案二: http://cboard.cprogramming.com/c-programming/13752-

c-求 linux 标准 C 语言判断2个字符串的一个函数

问题描述 求 linux 标准 C 语言判断2个字符串的一个函数 函数的原型为: int diff_str(const char * a, const char * b); 主要是用来处理当A和B 中存在有符号点 "." 或星号 "*"时的判断关系. 星号出现的(位置不定),且 (不限制长度) 匹配 [a-z0-9] 中包含的字符. 注意: 星号不能匹配 "." 例如: a="hello*world"; b="hel

C++实现将一个字符串中的字符替换成另一个字符串的方法_C 语言

本文实例讲述了C++实现将一个字符串中的字符替换成另一个字符串的方法,分享给大家供大家参考.具体方法如下: 题目要求: 原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy" 被替换的字符串当然不仅仅是空格,上面只是个例子 这是道很好的题目,也是百度面试中的一道题,题目不难,但是问题得考虑全面.这里给出如下实现代码: #include <iostream> #inc

c语言-C语言求助,统计出一个字符串中的单词数

问题描述 C语言求助,统计出一个字符串中的单词数 /*7.编写一个函数,统计出一个字符串中的单词数, 将每个单词存起来,并且返回最长单词. 函数原型定义如下:char * word ( char * str ) ;*/ #include #include char *word(char *str) { int i=0,maxi,j=0,k=0,flag=0; int s,t; char *p[100]; while(str[j]!='') { if(str[j]==' ') { str[j]='

c语言 字符-从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符。

问题描述 从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符. 题目要求 Problem Description 从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符. Input 输入有多组测试数据. 每组两行,第一行是字符串(字符串至少还有一个字符,不多于100个),第二行是一个字符 Output 每组输出一行,删除了所有应删除字符后的字符串 Sample Input ABCDE E ASD Dfg fhd D Sample Output ABCD AS fg

输入一个字符串,取出其中的整数(实现代码)_C 语言

题目:输入一个字符串,内含所有数字和非数字字符.将其中连续的数字作为一个整数,依次存放到一个数组中,统计共有多少个整数,并输出这些数. 复制代码 代码如下: #include<iostream>using namespace std;int main(){    int a[30]={0};    char str[200];    cout<<"请输入一个含有数字的字符串\n"<<endl;    cin>>str;    bool f

利用Go语言初步搭建一个web应用的教程

  这篇文章主要介绍了利用Go语言初步搭建一个web应用的教程,由于很多国人盲目迷信谷歌,导致Go语言在国内的人气远超国外...需要的朋友可以参考下 1.Abstract 在学习web开发的过程中会遇到很多困难,因此写了一篇类似综述类的文章.作为路线图从web开发要素的index出发来介绍golang开发的学习流程以及Example代码. 在描述中多是使用代码来描述使用方法不会做过多的说明.最后可以方便的copy代码来实现自己的需求. 本文适应对象: 对web开发有一定经验的人 能够灵活使用aj