输入一个以回车结束的字符串(少于80个字符),再输入一个字符,将字符串中该字符删除,然后再输出新的字

描述
输入一个以回车结束的字符串(少于80个字符),再输入一个字符,将字符串中该字符删除,然后再输出新的字符串
输入
第一行输入一个以回车结束的字符串

第二行输入一个字符
输出
新的字符串

样例输入
Fasfgfg
F

样例输出
asfgfg

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
char chr;
struct node *next;
} node,*list;

list read_str(void) //读取一个字符串
{
char c;
list now,a,str=NULL;
while ((c=getchar())!='\n')
{
now=(list)malloc(sizeof(node));
if (now==NULL) exit(-1);
now->chr=c;
now->next=NULL;
if (str) {
a->next=now;
a=now;
}
else
str=a=now;
}
return str;
}
list remove_chr(list lt,const char ch) //从字符串lt中删除字符ch,并返回删除字符之后的字符串
{
list beg=NULL,now,t=lt;
if (lt->chr==ch) {
beg=lt;
lt=lt->next;
}

while (t->next)
{
if (t->next->chr==ch) {
now=t->next;
t->next=now->next;
free(now);
}
t=t->next;
}
if (beg) {
free(beg);
}
return lt;

}

void write_str(list lt) //输出字符串lt
{
while (lt){
putchar(lt->chr);
lt=lt->next;
}
}
void free_list(list a) //释放a占用的空间
{
list t;
while (a)
{
t=a;
a=a->next;
free(t);
}
}
int main(void)
{
char ch;
list str;
str=read_str();
ch=getchar();
write_str(str=remove_chr(str,ch));
free_list(str);
return 0;
}
//---------------------------------------------------------------------------
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-28
#include <stdio.h>
void DelStr( char *src, char *dst)
{
int dstLen=0;//测试*dst的长度
char *p, *q;
p = dst;
while( *p!='\0' )
{
++dstLen, ++p;
}

p=src;
q=dst;
while( *src!='\0' )
{
if( *q == '\0' )
{
p -= dstLen;
q=dst;
continue;
}else if( *src != *q )//如果不两组数中的这个字符不相同---
{
q = dst; //则对照组数组重新开始
}else
{
++q;
}
*p++ = *src++;
}
*p='\0';
}

int main()
{
char str[100],str2[100];
gets(str);
gets(str2);
DelStr(str,str2);
printf("%s\n",str);
return 0;
}
第2个回答  2011-04-28
//完成
#include<stdio.h>
void main()
{
char a[100],b;
int k=-1;
printf("请输入字符串:\n");
scanf("%s",&a);
printf("请输入要删除的字符:\n");
fflush(stdin);
b=getchar();
for(int i=0;a[i]!='\0';i++)
{
if(a[i]==b)
{
k=i;
}
}
if(k!=-1)
{
for(int i=k;a[i]!='\0';i++)
{

a[i]=a[i+1];
}
}
printf("删除字符后字符串是:\n%s\n",a);

}本回答被网友采纳
第3个回答  2011-04-28
#include<iostream>
#include<stdio.h>
using namespace std;
void main()
{
char str[80];
char nstr[80];
char s;
int i, j;
cout<<"开始输入:"<<endl;
cin>>str;
cin>>s;
for(i=0,j=0; i<80; i++)
{
if(str[i] != s)
{
nstr[j] = str[i];
j++;
}
}
cout<<"输出:"<<nstr<<endl;
}
相似回答