scanf()関数は文字列を読み込む関数ですが、以下のように2回連続で使うと、(プログラマが意図した通りには)うまく動いてくれません。 char c, *str; printf("文字列を入力してください: "); scanf("%s", str); printf("文字を入力してください: "); scanf("%c", &c); scanf()関数は、入力された文字を一度バッファに溜め、そのデータを読み込みます。 さらに、%sを指定すると、空白やタブ、改行文字などは読み込みません。 上記の例でバッファに溜められるのは'a''b''c''\n'という4文字分がバッファに溜まっています。 すると、1つ目のscanf("%s")では"abc"という文字列が変数*strに代入されます。 が、まだ改行'\n'がバッファに残っているのです。 そして2つ目のscanf("%c")がバッファに残ってい