以下のコードは標準入力で受け取った文字列を標準入力するだけのコードです。
C
1#include <stdio.h> 2 3const int BUF_SIZE = 255; 4char buf[BUF_SIZE]; 5 6int main(){ 7 printf("Input : "); 8 fgets(buf, BUF_SIZE, stdin); 9 printf("Output : %s", buf); 10 return 0; 11}
実行して適当な文字列を入れると以下のようになります。
shell
1Input : hoge 2Output : hoge
次に fgets の部分を read(2) に置き換えた以下を考えます。
C
1#include <stdio.h> 2#include <unistd.h> 3 4const int BUF_SIZE = 255; 5char buf[BUF_SIZE]; 6 7int main(){ 8 printf("Input : "); 9 read(STDIN_FILENO, buf, BUF_SIZE); 10 printf("Output : %s", buf); 11 return 0; 12}
すると printf("Input : ") が実行されるより前に入力待ち状態になり、実行結果は以下のようになります。
shell
1hoge 2Input : Output : hoge
このあたりの挙動は、何かしらの優先度に基づいて定められているものなのでしょうか?
ご教授いただけると幸いです、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/27 08:03