私はK & Rの第1章の練習の一部として次のコードを書きました。コードはタブとバックスラッシュを予想通りに置き換えますが、バックスペースを\ bに置き換えません。コードは次のとおりです。シェルと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;
}
私はStack Overflowを調べました。 this質問への回答は、シェルがバックスペースを消費していることを示しています。その結果、書き込むコードにはバックスペースが見えません。これは私の質問に私をもたらします:私がキーボードで提供する入力はどうなりますか?私はこれが標準ストリームの一部になると仮定します。明らかに、しかし、私が入力するすべての文字を自分のコードにするわけではありません。誰かが私のキーストロークとそのコードの入力を処理する間に何が起こるか説明してください。また、この処理が発生する前に私のコードがstdinバッファを読み取る方法はありますか?
これらの質問が意味をなさないことを願います。私が尋ねようとしていることを理解するまでにはしばらく時間がかかりました。私はそれを完全に理解したとは確信していません。
あなたが研究する関連トピックは、*端末*(エミュレータ)と考えています。 – EOF
入力/出力をファイルにリダイレクトしようとしましたか?それは動作しましたか? – Olaf
私はあなたが興味深い最初の答えを見つけるだろうと思うhttps://stackoverflow.com/questions/1798511/how-to-avoid-press-enter-with-any-getchar –