这段程序为什么不对呢?

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:53:33
#include<stdio.h>
void delchar(char s[],char c);
void main()
{
char s[80],c;
int i=0;
c=getchar();
getchar();
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
delchar(s,c);
for(i=0;s[i]!='\0';i++)
putchar(s[i]);
}
void delchar(char s[],char c)
{
int j=0;
int k=0;
char t[80];
for(j=0;s[j]!='\0';j++){
if(s[j]!=c){
t[k]=s[j];
k++;
}
}
}
要求编写一个函数delchar(s,c),该函数将字符串s中所有字符c删除。自己定义main函数,并调用delchar函数。
按上述程序做出来没有过滤掉c。

在你的程序末尾加两行代码就OK!
void delchar(char s[],char c)
{
int j=0;
int k=0;
char t[80];
for(j=0;s[j]!='\0';j++){
if(s[j]!=c){
t[k]=s[j];
k++;
}
}
t[k]='\0';
strcpy(s,t);
}
要包含string.h头文件.
调用函数delchar结束后,内存中的t数组就消失了.而main中的S数组还不是S数组,delchar并没有改变S数组呀.

#include<stdio.h>
#include<string.h>
void delchar(char s[],char c);
void main()
{
char s[80],c;
int i=0;
c=getchar();
getchar();
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
delchar(s,c);
for(i=0;s[i]!='\0';i++)
putchar(s[i]);
}
void delchar(char s[],char c)
{
int j=0;
int k=0;
char t[80];
for(j=0;s[j]!='\0';j++)
{
if(s[j]!=c)
{
t[k]=s[j];
k++; }
}
t[k]='\0';
strcpy(s,t);
}

OK