私は(多かれ少なかれ)Cでこれを行う方法を知っています:
#include <stdio.h>
#include <string.h>
int
main(int argc, char** argv)
{
char buf[BUFSIZ];
fgets(buf, sizeof buf, stdin); // reads STDIN into buffer `buf` line by line
if (buf[strlen(buf) - 1] == '\n')
{
printf("%s", buf);
}
return 0;
}
望ましい最終結果は、存在する場合、パイプから STDIN を読み取ることです。(上記のコードではそれができないことはわかっていますが、パイプ/ヒアドキュメントから読み取るときにのみ上記を行う方法がわかりませんでした)。
Chicken Schemeで同様のことを行うにはどうすればよいですか?
前に言ったように、最終的な目標はこれを実行できるようにすることです。
echo 'a' | ./read-stdin
# a
./read-stdin << EOF
a
EOF
# a
./read-stdin <<< "a"
# a
./read-stdin <(echo "a")
# a
./read-stdin < <(echo "a")
# a