を試してみてください。ファイルの終わりを知らせる方法は、OSと端末の設定によって異なります。
これは、Windows上のUNIXタイプのシステム上のDとCTRLZ通常CTRLです。 UNIXのcookedモード(通常の入力モード)では、通常、行の最初の文字として入力し、改行(ENTER)を続けなければなりません。Windowsに
、CTRLZはライン上の任意の場所に入力されたが、それでも改行が続いする必要がありますすることができます。
UNIXでは、stty
コマンドを使用して、EOF
を送信することを端末インターフェイスに通知する実際の文字を設定できます。あなたはeof
が^D
(CTRLD)に設定されていることを二行目の終わりに見ることができます
speed 38400 baud; rows 45; columns 150; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D;
eol = <undef>; eol2 = <undef>; swtch = ^Z; start = ^Q;
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl
-cstopb cread -clocal -crtscts -ignbrk brkint -ignpar -parmrk
-inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany
-imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo
-echoe -echok -echonl -noflsh -tostop -echoctl -echoke
:あなたはstty -a
を実行する場合は、何かのように表示されます。例えば、CTRLにXそれを設定する
stty eof ^x
:あなたはでこれを変更することができます。他にもたくさんのものを設定することができますが、そのほとんどがあなたの現在の端末を使用できないようにしますので、注意してください:-)
最終的には、ファイルが終了したことをプログラムに伝えたい場合はCTRLD UNIX用(または問題が解決しない場合はstty
を確認してください)またはWindows用CTRLZ。あなただけの入力のラインを取得したい場合は、次のように、あなたのコードで\n
文字を使用します。
#include <stdio.h>
int main (void) {
long nc = 0;
while(getchar() != '\n')
++nc;
printf("%ld\n", nc);
return 0;
}
私は本当にWindowsを使用しており、Ctrl + Zは正しいです。ありがとう、私はそれを新しいことはありません。 –
it ** is ** ctrl + z –