输入一个字符串,再输入一个字符ch,将字符串中所有的ch字符删除后输出该字符串。

要求定义和调用函数delchar(s,c),该函数将字符串s中出现的所有c字符删除

#include"stdio.h"

void mChar(char*s,char c);

int main()

{

char s[20],c;

scanf("%s",s);

scanf("%c",&c);

mChar(s,c);

printf("%s",s);

}

void mChar(char*s,char c)

{int i=0;

while(*(s+i)!='\0')

{

if(*(s+i)==c)

{

*(s+i)='*';

}

i++;

}

}

扩展资料:

printf用法

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a);

输出结果为a=1234。

//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)

#include<stdio.h>

int main()

{

int i,j;

scanf("%d%d",&i,&j);

printf("i=%d;j=%d",i,j);

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
#include <stdio.h>
void delchar(char* str, char c) {
int i = 0, j = 0;
while (str[j] != 0) {
if (str[j] != c) {
str[i] = str[j];
i++;
}
j++;
}
str[i] = 0;
}
int main()
{
char s[100];
while (scanf("%s", s) != EOF) {
delchar(s, 'a');
printf("[%s]\n", s);
}
return 0;
}
想象两个下标一个i一个j。j一直向前走,如果碰到要剔除的字符就跳过去,但是i不跳过去,如果不是要剔除的字符就复制给i,然后i也前进,这样就把要剔除的字符删掉了。只用遍历一遍,用strcpy发现一个要删除的字符就复制一遍,额外多做了很多无用功。本回答被提问者和网友采纳
第2个回答  2012-11-30
#include<stdio.h>
#include<string.h>
void delchar(char*a,char b);
void main()
{
int j,i=0;
char c;
char str[40];
printf("input string:");

do{
scanf("%c",&str[i]);
c=str[i];
i++;
}while(c!='\n');
printf("input char:");
scanf("%c",&c);
delchar(str,c);
for(j=0;j<i-1;j++)
printf("%c",str[j]);
}
void delchar(char*a,char b)
{
int i,j;
for(i=0;i<40;i++)
{
if(*(a+i)==b)
for(j=i;j<39;j++)
*(a+j)=(*(a+j+1));
}
}
和你说的应该差不多,字符串最长40
第3个回答  2012-11-30
#include<string.h>
void delchar(char *s, char c)
{
while(*s)
{
if(*s == c)
strcpy(s, s + 1);
s++;
}
}
相似回答