c语言编写函数,将一个字符串str中指定的字符ch删去,函数原型是void delchar(char*str,char ch)
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
2、定义变量:#include <stdio.h>void main(){ char c1,c2,c3; /*定义字符变量*/。
3、输入一个字符:printf("输入一个字符,使用getche函数接收\n"); /*提示用户输入一个字符*/ c1=getche(); /*使用getche()函数接收*/printf("\n"); /*输出一行空行*/。
4、输入一个字符: printf("输入一个字符,使用getch函数接收\n"); 。
5、输入一个字符:printf("输入一个字符,使用getchar函数接收\n")。 /*提示用户输入一个字符*/
c3=getchar(); /*使用getchar()函数接收*/。
6、输出结果:printf("\n输入的这三个字符是:\n"); /*输出一行空行*/ /*将这些字符输出*/
putchar(c1); putchar(c2);putchar(c3);printf("\n");。
算法描述:
定义两字符指针,一个作为读取指针,另一个作为写入指针,写指针指向字符串的头部;
将写指针向后移定位到第一个要替换字符或结束符,
如果是结束符, 返回
否则,读指针 = 写指针加1
如果 读指针指向的字符不是要替换字符或结束符, 将读指针内容 赋给写指针; 两指针后移;
否则 如果 读指针指向的是要替换字符, 读指针后移;
否则 将读指针内容 赋给写指针, 返回.
重复3.
代码如下:
void delchar(char*str,char ch)
{
char * w = str, * r;
while( *w != ch && *w !='\0') w++;
if( *w == '\0')
return ;
r = w + 1;
for(;;)
{
if( *r != ch && *r !='\0')
*w++ = *r++;
else if( *r == ch )
r++;
else
{
*w = *r;
return;
}
}
}
void delchar(char *str,char ch)
{
#define MAX_SIZE 256
char ts[MAX_SIZE];
int len,i,j=0;
memset(ts,0,MAX_SIZE);
#undef MAX_SIZE
len = strlen(str);
for(i = 0;i< len;i++){
if(str[i]!=ch){
ts[j] = str[i];
j++;
}
}
memset(str,0,strlen(str));
memcpy(str,ts,strlen(ts));
}
char* ss = "jiang";
delchar(ss,'a');
// ss = "jing"
{
char *p=str;
while( *str )
{
if ( *str != ch )
*p++=*str ;
str++ ;
}
*p='\0' ;
}
char *p, *q;
p = q = str;
while (*p) {
if (*p == ch) {
p++;
} else {
*q = *p;
q++;
p++;
}
}
*q = '\0';
}