作爲K & R的第一章練習的一部分,我編寫了以下代碼。代碼按預期替換製表符和反斜槓,但不會用\ b替換後退。這裏是代碼:shell和C程序之間的關係
#include <stdio.h>
int main(void)
{
int c;
while((c = getchar()) != EOF)
{
if (c == '\t')
{
putchar('\\');
putchar('t');
}
if (c == '\b')
{
//putchar('\\');
//putchar('b');
printf("\\b");
}
if (c == '\\')
{
putchar('\\');
putchar('\\');
}
if (c != '\t' && c != '\b' && c != '\\')
{
putchar(c);
}
}
return 0;
}
我已經看了通過堆棧溢出。 this問題的答案是關於shell使用退格的結果,因爲我寫的代碼從來沒有看到退格。這使我想到了我的問題:我在鍵盤上輸入的內容會發生什麼?我認爲這成爲stdin流的一部分。顯然,並非所有輸入的字符都會將其添加到我的代碼中。有人能解釋我的鍵盤輸入和我的代碼處理輸入之間發生了什麼處理嗎?另外,有沒有辦法讓我的代碼在進行此處理之前讀取stdin緩衝區?
我希望這些問題有意義。我花了一段時間才弄清楚我想要問什麼,我不確定我是否完全明白了這一點。
我相信你研究的相關話題是*終端*(模擬器)。 – EOF
您是否嘗試將輸入/輸出重定向到文件?它有用嗎? – Olaf
我想你會發現第一個答案有趣https://stackoverflow.com/questions/1798511/how-to-avoid-press-enter-with-any-getchar –