如何从一个字符串中查找并删除一个字符?

Woodz 2012-06-10 11:32:29

#include<stdio.h>
#include<string.h>

int main(void)
{
char str1[10]; //录入字符串
char str2[10]; //剔除某字符后的字符串
char str; //待剔除字符
int i;
int len;


printf("请输入待删除字符:");
scanf("%c", &str);
printf("请输入一段字符串:");
scanf("%s", str1);


len = strlen(str1);

for(i = 0; i < len; i++)//找到待删除字符
{
if(str1[i] != str)
str2[i] = str1[i];
else
{
for(; i < len-1; i++) //想要 Wood Zhang -> Wood hang 和 Wood Zhang -> Wood hang( 用空格替换)
{
str2[i] = str1[i+1];
}
}
break;


}

printf("修改后的字符串为:%s", str2);

return 0;
}




...全文
381 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-06-11
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
char s[256];
char *p;
int r,n,i;
int main() {
while (1) {
printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");
fgets(s,256,stdin);
if ('\n'==s[0]) break;
p=s;
while (1) {
p=strstr(p,"%20");
if (p) {
memmove(p+1,p+3,strlen(p)-3+1);
p[0]=' ';
} else break;
}
p=s;
while (1) {
p=strstr(p,"你懂得");
if (p) {
memmove(p+6,p+6,strlen(p)-6+1);
for (i=0;i<6;i++) p[i]='X';
} else break;
}
printf("%s",s);
}
return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//


qq120848369 2012-06-11
  • 打赏
  • 举报
回复
边扫边移动,O(n)
Woodz 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

遍历、查找、移动
[/Quote]

我已经试了,但会删除 待删除字符 后的所有字符串。
AnYidan 2012-06-11
  • 打赏
  • 举报
回复
遍历、查找、移动
Woodz 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

C/C++ code

#include<string>
#include <iostream>
using namespace std;

int main(void)
{
string str1;
string str; //待剔除字符

printf("请输入待删除字符:");
cin>>str;
printf("请输入一段字符串:");
……
[/Quote]

我要 C 代码……
qiang81020 2012-06-11
  • 打赏
  • 举报
回复
不会调格式了。。。试试吧

char *p = NULL;

printf("请输入待删除字符:");
scanf("%c", &str);
printf("请输入一段字符串:");
scanf("%s", str1);



if ((p = strchr(str1, str)) == NULL)
{
//not find!
}


if (1)//替换为空格;
{
*p = ' ';
}
else //去掉字符串
{
len = strlen(p + 1);
memmove(p, p + 1, len);
p[len] = '\0';
}

printf ("result %s\n", str1);
nanjingnew4 2012-06-11
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main()
{
char str1[10+1]; //录入字符串
char str2[10+1]; //剔除某字符后的字符串
char str; //待剔除字符
int i=0,j=0;
int len=0;
printf("请输入原字符串(不超过10位):");
scanf("%s",str1);
fflush(stdin);
printf("请输入要删除的字符:");
scanf("%c",&str);
fflush(stdin);
len=strlen(str1);
for(i=0;i<=len;i++,j++)
{
if(str1[i] == str)
j--;
else
str2[j]=str1[i];

}
str2[j]='\0';
printf("修改后的字符串:%s\n",str2);
return 0;
}
prohibit 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

C/C++ code
...
for(i = i + 1; i < len-1; i++) //想要 Wood Zhang -> Wood hang 和 Wood Zhang -> Wood hang( 用空格替换)
{
str2[i] = str1[i+1];
}
...
[/Quote]呃,错了
prohibit 2012-06-10
  • 打赏
  • 举报
回复
...
for(i = i + 1; i < len-1; i++) //想要 Wood Zhang -> Wood hang 和 Wood Zhang -> Wood hang( 用空格替换)
{
str2[i] = str1[i+1];
}
...
lbq199204 2012-06-10
  • 打赏
  • 举报
回复
++
[Quote=引用 1 楼 的回复:]
char str[] = "12x3456xyzx";
char Tmp[255] = {0};
char* p = str;
int i = 0;
while (*p != 0)
{
if (*p != 'x')
{
Tmp[i] = *p;
i++;
}
p++;
}

strcpy(str,Tmp);

printf("%s\n",str);
[/Quote]
sevancheng 2012-06-10
  • 打赏
  • 举报
回复
char str[] = "12x3456xyzx";
char Tmp[255] = {0};
char* p = str;
int i = 0;
while (*p != 0)
{
if (*p != 'x')
{
Tmp[i] = *p;
i++;
}
p++;
}

strcpy(str,Tmp);

printf("%s\n",str);
hilevel 2012-06-10
  • 打赏
  • 举报
回复

#include<string>
#include <iostream>
using namespace std;

int main(void)
{
string str1;
string str; //待剔除字符

printf("请输入待删除字符:");
cin>>str;
printf("请输入一段字符串:");
cin>>str1;

int idx;
while ((idx=str1.find(str))!=string::npos)
{
str1.erase(idx,str.length());
}

printf("修改后的字符串为:%s\n", str1.c_str());
return 0;
}

Woodz 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

C/C++ code
...
for(i = i + 1; i < len-1; i++) //想要 Wood Zhang -> Wood hang 和 Wood Zhang -> Wood hang( 用空格替换)
{
str2[i] = str1[i+1];
……
[/Quote]

我要正确的代码,不是让人帮我挑错……

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧