私は、基本的にユーザーが「入力」して何かをするのを待つ関数を書いています。私はテストが以下のときに動作していることがわかりました: r(キャリッジリターン)と c(改行)をコンソールからgetcで読み取っていますか?
#include <stdio.h>
int main()
{
int x = getc(stdin);
if (x == '\n') {
printf("carriage return");
printf("\n");
}
else {
printf("missed it");
printf("\n");
}
}
私が持っている、と私は最初に試したことはやっていた質問:if (x == '\r')
をしかし、テストでは、プログラムは、Enterキーを押す私をキャッチしていません。 '\n'
は、私がコンソールから入力を打つことに対応しているようです。誰かがその違いを説明できますか?また、確認するには、if... == "\n"
と書くことは、文字列リテラルを意味するでしょうか?つまり、ユーザーは文字通りコンソールから"\n"
と入力する必要がありますか?
関連:http://stackoverflow.com/questions/1355095/what-is-the-difference-between-r-and-n – Mysticial
Cはエスケープを一重引用符と二重引用符の両方に適用するので、 "\ n"は最初のASCIIコード10(\ n自体)と2番目のASCII NUL(ヌルターミネータ)である長さ2文字の文字列。 – toriningen
(タイトルの編集は気にしないことを願っています。) –