void main(int argc, char * argv[])
{
FILE* inFile = NULL;
char * bufferFromStdin;
char buf[100];
printf("Enter something:\n");
scanf("%s", buf);
printf("First scan from stdin is: %s\n", buf);
if(buf == "THIS" || buf[0]=='T')
{
printf("THIS found first\n");
}
else {printf("Not Found first\n");}
printf("Enter something again:\n");
scanf("%s", bufferFromStdin);
printf("Second scan from stdin is: %s\n", bufferFromStdin);
if(bufferFromStdin == "THIS")
{
printf("THIS found second\n");
}
else {printf("Not Found second\n");}
}//main
出力が得られます:
./test < testinput.txt
何かを入力してください:
stdin からの最初のスキャンは: THIS
THIS found first
もう一度入力してください:
stdin からの 2 番目のスキャンは: (null)
Not Found second
testinput.txt には、「THIS」という 1 行のテキストがあります。
これは、入力を通常の stdin としてプログラムを実行したときに得られるものです ./test
何かを入力してください:
THIS標準入力
からの最初のスキャンは: THIS
THIS 最初に見つかっ
たものです もう一度何かを入力してください:
THIS標準入力
からの 2 番目のスキャンは: (null)
Not Found second
どちらの入力方法を使用しても、入力を char* に保存できないのはなぜですか。これを回避するにはどうすればよいですか? キーボードで標準入力から入力を取得し、I/O をリダイレクトする必要もあります。malloc(); と関係があると思います。
助けてくれてありがとう。