求助:C语言中的backspace

各位高手好!小弟今天在做KernighanCProgrammingLanguage中的一道习题时,遇到了一些问题题目如下:"Writeaprogramtocopyitsi... 各位高手好!
小弟今天在做Kernighan
C Programming Language
中的一道习题时,遇到了一些问题
题目如下:
"Write a program to copy its input to its output,replacing each tab by \t,each backspace by \b,and each backslash by \\."
可是我始终没办法检测到输入流中的\b
我的代码如下:

#include <stdio.h>

/* replace each tab by '\t',each backspace by '\b' and backslash by '\\' */

int main()
{
int c;

while ((c=getchar())!=EOF)
if (c=='\t')
printf("\\t");
else if (c=='\b')
printf("\\b");
else if (c=='\\')
printf("\\\\");
else
putchar(c);

}
谢谢您啦!
展开
 我来答
desprya
2010-07-12 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:28.4万
展开全部
getchar从标准输入的缓冲区读字符,backspace根本进不了缓冲区。
所以应该使用无缓冲的读字符函数:getch(),包含在头文件<conio.h>中
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
mcu_fans
2010-07-12
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
确实用getchar是无法检测到的。在控制台中输入的\b用来修改输入的字符,并不送入到输入缓冲区中,如果想让此程序有结果,可以用文件来作为输入,文件中可包含\b的ascii码,就可以显示出\b了。当然是二进制的文件。可用文件重定向作为输入。或者改用其他的函数来读取输入的字符,不过标准C中未提供这样的函数,只有少数编译器提供了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式