输入一行字符,要求删去其中的某个字符后输出,要删除的字符由键盘输入。
#include"stdio.h"
void main()
{
char s[81];
char result[81];//定义一个数组保存结果
int i,j=0;
char n;
printf("input a string:");
gets(s);//输入原始字符串
printf("input want to delete char:");
scanf("%c",&n);//输入想要删除的字符
for(i=0;i<strlen(s);i++)
{
if(s[i]==n)
{
}
else
{
result[j]=s[i];
j++;
}
}
result[j]='\0';
printf("s=%s\n",s);
}
格式有点问题,网页自动修改了格式,不好意思,代码没问题,希望对你有帮助,如果有疑问可以继续追问
#include"stdio.h"
void main()
{
char s[81];
char result[81];//定义一个数组保存结果
int i,j=0;
char n;
printf("input a string:");
gets(s);//输入原始字符串
printf("input want to delete char:");
scanf("%c",&n);//输入想要删除的字符
for(i=0;i<strlen(s);i++)
{
if(s[i]==n)
{
}
else
{
result[j]=s[i];
j++;
}
}
result[j]='\0';
printf("s=%s\n",s);
}
#include
#include
void main()
{
char s[81];
char c;
int i,j;
printf("input a string:");
gets(s);
printf("input a letter:");
scanf("%c",&c);
for(i=0;i<strlen(s);i++)
{
if(c == s[i])
{
for(j=i; j<strlen(s); j++)
s[j]=s[j+1];
break;
}
}
printf("s=%s\n",s);
}
你看看ANSCII表,想清楚输入输出的过程。
在if处有所失误,你难道不应该在判断该字符应删除后就把所有后面的字符移到前面覆盖前一个字符吗?
#include
#include
char *fun2(char *str,char a);
int main()
{
char str[20],a; //定义一个字符串20的长度
char *kp; //定义一个指针
printf("请输入一个字符串:");
gets(str);
printf("请输入一个要删除的字符:");
scanf("%c",&a);
//getchar();
kp=fun2(str,a); //指针指向fun2函数,接收返回值
//puts(kp);
printf("%s\n",kp); //输出地址上的内容 字符串
return 0;
}
char fun2(char *str,char a) //aabbcd
{
int i,j=0;
static char buf[20]; //没有static变量 局部变量运行完会释放掉内存空间,返回值就会为空,
for(i=0;i<strlen(str);i++) //计算strlen函数有效长度
{
if((str+i) != a)
{
buf[j++]= *(str+i);
}
}
buf[j]='\0';
return buf;
}
#include
#include
void main()
{
char s[81];
int i,n;
printf("input a string:");
gets(s);
printf("input n:");
scanf("%d",&n);
for(i=n;i<strlen(s);i++)
s[i]=s[i+1];
printf("s=%s\n",s);
}
//运行情况:
input a string:abcdefg
input n:2
s=abdefg
请按任意键继续. . .