gpt4 book ai didi

c - 了解 C 中的退格 (\b) 行为

转载 作者:行者123 更新时间:2023-11-30 17:01:31 24 4
gpt4 key购买 nike

该程序将其输入复制到其输出,将 TAB(\t) 替换为 \t backspace(\b) 为 \b。但在我的代码中,当我输入退格键时,我无法读取输入字符,它不能作为制表符进行替换。

在 Linux 中使用 GCC 编译:

#include<stdio.h>
int main(void)
{
int c=0;
while((c=getchar())!=EOF){
if(c=='\t'){
printf("\\t");
if(c=='\b')
printf("\\b");
}
else
putchar(c);
}
return 0;
}

假设我输入 vinay (tab) hunachyal

Output:vinay\thunachyal 

如果我输入 vinay(和 1 个退格键)

Output:vina

所以我的疑问是为什么 vina\b 在这种情况下不打印?
是否可以检测 \b 并打印 \b?如果不是的话原因是什么

注意: 我需要在运行时输入退格键而不提供具有\b 的单独文件

最佳答案

退格键被 shell 解释器占用,所以你的程序永远不会看到它,而且你的代码由于花括号放错了位置而被(轻微)损坏,而糟糕的缩进也无济于事。

这是更正后的版本:

#include<stdio.h>
int main(void)
{
int c=0;
while((c=getchar())!=EOF){
if(c=='\t')
printf("\\t");
else if(c=='\b')
printf("\\b");
else
putchar(c);
}
putchar('\n');
return 0;
}

按预期工作:

$ echo 'vinay\thunachyal\b' | ./escape
vinay\thunachyal\b

关于c - 了解 C 中的退格 (\b) 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36975586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com