指针,字符删除
输入一行字符串。在输入个字符,删除字符串中相同的字符。# include <stdio.h>
# include <string.h>
main()
{
char a,b;
char* j;
gets(a);
b=getchar();
j=a;
for(;*j != '\0';j++)
{
if(*j==b)
*j=*(j+1);
}
printf("%s",a);
}
问题,我发现当需要删除的字符,连在一起的时候,就只能删除一个。应该是循环的那部分错了,但是我不知道该如何改。
如
dsa%%%afd
%
我的答案是dsa%%afd,并没有完全把%删除完 本帖最后由 ryxcaixia 于 2015-11-16 13:41 编辑
char* rm_spec_ch(const char* str, const char ch)
{
// res is the result char buf
char* res = (char*)malloc(sizeof(char) * strlen(str));
memset(res, 0, sizeof(char) * strlen(str)); // empty the buf
for (int i = 0; *str && str; str++)
if (*str != ch)
res = *str;
return res;
}
int main()
{
printf("enter the str\n");
char buf = {0};
gets(buf);
printf("enter the char that you want to remove\n");
char rm_ch = getchar();
char* res = rm_spec_ch(buf, rm_ch);
printf("the res:%s\n", res);
// release the memory on heap
free(res);
res = NULL;
return 0;
}
# include <stdio.h>
# include <string.h>
int main()
{
char a,b;
char* j;
gets(a);
b=getchar();
j=a;
char str;//加个数组输出
int i=0;//让新加入的数组的下标自增
for(;*j != '\0';j++)
{
if(*j!=b)
{
str=*j; //原数组转到新数组
i++; //新数组自增
}
}
str='\0'; //手动加个结束符
printf("%s",str);//输出
return 0;
} 运行结果如图 ryxcaixia 发表于 2015-11-16 13:39
谢谢,大爱! 学习了,谢谢分享
页:
[1]