将多个空格合并为一个空格的疑问?

luorixiaoxiao 2012-10-28 09:51:36
#include <stdio.h>

#define NONBLANK 'a'

/*输入复制到输出,多空格合并*/
main()
{
int c, lastc;

lastc = NONBLANK;
while((c = getchar()) != '\n')
{
if (c != ' ')
putchar(c);
if (c == ' ')
if(lastc != ' ')
putchar(c);
lastc = c;
}
}


各位大神:
请问lastc是如何代表前一个空格前一个字符的?
...全文
359 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-10-28
  • 打赏
  • 举报
回复
lastc is previous character;
前一个字符的意思

if(当前字符是空格 && 前一个字符不是空格)
{
输出空格;
}
前一个字符 = 当前字符;
ganq123 2012-10-28
  • 打赏
  • 举报
回复
处理第一个空格时,lastc != ‘ ’ 成立,输出 c ;lastc = ‘ ’;
第二个空格时,lastc != ‘ ’ 不成立,不输出 c;
下一个是不是空格时,输出字符,lastc = c。
luorixiaoxiao 2012-10-28
  • 打赏
  • 举报
回复
在此谢谢各位大神,小弟这厢有礼了;问题已解决,谢谢!~
luorixiaoxiao 2012-10-28
  • 打赏
  • 举报
回复
lastc = c;
是对lastc进行刷新,使lastc始终等于当前循环使用的字符;
而到了下一次循环时,他就成了前一个字符。
NOIPER 2012-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
假设上面23之间两个空格
[/Quote]
2 3
处理第一个空格时输出空格 (因此时lastc='2' lastc != ' ' 成立)
处理第二个空格时不输出字符(因此时lastc=' ' lastc != ' ' 不成立)
newtee 2012-10-28
  • 打赏
  • 举报
回复
假设上面23之间两个空格
newtee 2012-10-28
  • 打赏
  • 举报
回复
自己带一个数字进去就知道了
假设输入2 323
输入2 输出2
输入空格 输出空格 lastc=空格
再输入空格 if(lastc != ' ')不满足条件 lastc=空格
。。。。

70,037

社区成员

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

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