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)退出子程序而已。
源程序以及算法注释如下:
#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;
}
声明一个字符数组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;
}
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;
}