C语言编程:在一个指定的 字符串中删除指定的 字符,并输出该字符串。

C语言编程:在一个指定的 字符串中删除指定的 字符,并输出该字符串。

#include <stdio.h>

#include <string.h>

int main(int argc, char **argv)

{

int num = 0;

for (int i = 0; i <= strlen(argv[1]); i++)

if (argv[1][i] != argv[2][0])

{

argv[1][num] = (i == strlen(argv[1])) ? '\0' : argv[1][i];

num++;

}

printf("%s\n", argv[1]);

return 0;

}

运行结果:


扩展资料:

return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。

return语句用来结束循环,或返回一个函数的值。

1、return 0,说明程序正常退出,返回到主程序继续往下执行。

2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-09

源程序以及算法注释如下:

#include<stdio.h>

#include<string.h>

int main()

{   

int i;    

char  *p,*q;//定义指针变量用于循环遍历

char str[100] = {NULL};//定义删除前的字符串

char st[100] = {NULL};//定义删除后的字符串

q=st;//取出st字符数组的首地址

p=str;//取出str字符数组的首地址

gets_s(str);//输入字符串

char a;//定义删除字符变量

printf("请输入要删除的字符");

a = getchar();//输入谁需要删除的字符变量

for(i=0;*(p+i)!='\0';i++)//循环遍历,将非删除字符的元素取出

{

if(*(p+i)!=a)//非删除元素取出

{

*q=*(p+i);//非删除元素拷贝

q++;//地址加一


}

printf("%s", st);//输出删除后字符串

return  0;

}

输出结果如下:

扩展资料:

其他实现方法:

#include<stdio.h>  

#include<string.h>   

int main()   

{      

int j=0,i;

char str[20],c;       

gets(str);       

scanf("%c",&c);       

for(i=0; str[i]!='\0'; i++)           

if(str[i]!=c)              

 str[j++]=str[i];       

str[j]='\0';       

printf("%s\n",str);       

return 0;   


本回答被网友采纳
第2个回答  推荐于2017-09-02
声明一个字符数组str存入输入的字符串,再声明一个字符变量接收要删除的字符。分别用i和j源字符数组计数和目标字符数组计数,然后开始对str进行自己向自己连同最后的'\0'逐字符复制;当遇到要删除的字符时目标计数j暂停一次计数,这样要删除的字符就会被下一个非删除字符覆盖。最后就达到了删除指定字符的目的。
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char str[100],ch;//声明字符数组str和字符变量ch
    int i,j;
    printf("Input a string...\nstr=");
    gets(str);//输入字符串
    printf("Enter a character to delete...\nch=");
    ch=getchar();//输入要删除的字符
    for(j=i=0;str[j]=str[i];i++)//str向str逐字符拷贝
        if(str[j]-ch) j++;//不是删除字符时目标计数才增量
    printf("The result: %s\n",str);//输出
    return 0;
}

第3个回答  2015-12-12
#include <stdio.h>#include <string.h> char* DelCharFromString(char *str, int len, int pos); void main(){ char str[100]; int pos; //删除位置 int len; //字符串长度 printf("请输入一个字符串:\n"); scanf("%s", str); len = strlen(str); printf("请输入要删除字符的位置:(0~%d)", len-1); scanf("%d", &pos); printf("str = %s\n", DelCharFromString(str, len, pos));} char* DelCharFromString(char *str, int len, int pos){ int i; char *tmp = str; if(pos <0 || pos >= len) { printf("要删除的位置不存在,什么字符都不删除。\n"); return str; } for(i=0; i<len-1; i++) { if(i >= pos) { *tmp = *(tmp+1); } tmp++; } *tmp = '\0'; return str;}
第4个回答  推荐于2017-09-06
样例输入
sdf$$$sdf$$
$
样例输出
sdfsdf
是要这种效果吧
附上代码
#include<stdio.h>
int main()
{
char a[100];
char b;
int i;
gets (a);
scanf("%c",&b);
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] != b)
{
printf("%c",a[i]);
}
}
printf("\n");
return 0;
}本回答被提问者采纳
相似回答