从键盘输入一个字符串和一个指定字符,将字符串中出现的指定字符删除程序怎么理解

whc748227431 2012-02-16 09:00:47
解释一下下面函数的意思,不太理解,具体点啊,谢谢题目是:
从键盘输入一个字符串和一个指定字符,将字符串中出现的指定字符删除
#include<stdio.h>
void prochar(char *str,char c)
{char *p;
for(p=str;*p!='\0';p++)
if(*p!=c)
*str++=*p;
*str='\0';
}
void main()
{char str[80],char_c;
gets(str);
scanf("%c",&char_c);
prochar(str,char_c);
puts(str);
}
...全文
3371 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-02-16
  • 打赏
  • 举报
回复
小心输入
aaa
a
输出空串的情况
DyanWang 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 crazymk 的回复:]

//prochar
//input: str,待删除字符串。c 欲删除的字符
void prochar(char *str,char c)
{
char *p;
//另p指向str作为待删除字符串的移动指针
//循环我补上了大括号,能清楚一些
for(p=str;*p!='\0';p++)
{
//如果p指向的字符与c不符,即不删除
if(*p!=c)
……
[/Quote]

++
IVERS0N 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 crazymk 的回复:]

//prochar
//input: str,待删除字符串。c 欲删除的字符
void prochar(char *str,char c)
{
char *p;
//另p指向str作为待删除字符串的移动指针
//循环我补上了大括号,能清楚一些
for(p=str;*p!='\0';p++)
{
//如果p指向的字符与c不符,即不删除
if(*p!=c)
……
[/Quote]

很详细
CrazyMK 2012-02-16
  • 打赏
  • 举报
回复
//prochar
//input: str,待删除字符串。c 欲删除的字符
void prochar(char *str,char c)
{
char *p;
//另p指向str作为待删除字符串的移动指针
//循环我补上了大括号,能清楚一些
for(p=str;*p!='\0';p++)
{
//如果p指向的字符与c不符,即不删除
if(*p!=c)
{
//str指向的字符等于p指向的字符,然后指针+1指向下一个字符
*str++=*p;
}
//反之,p向下移动一位
}
//str末位标识/0表示字符串结尾
*str='\0';
}

示例操作
str = abcdef\0
c = c
函数执行
p依次指向abcdef\0
循环结束后
str = abdeff\0
函数结束后
str = abdef\0\0
justkk 2012-02-16
  • 打赏
  • 举报
回复
从字面意思理解
输入abc,和字符b
那最终结果就是ac
AnYidan 2012-02-16
  • 打赏
  • 举报
回复
几个库函数可以google

prochar 可以单步运行,看看每一步都在干什么

心有未来 2012-02-16
  • 打赏
  • 举报
回复
最新的标准规定void main()是不被允许的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧