- ベストアンサー
C言語の初心者です。これを実行してみてください。
「a」って打ち込んだら「a」ってでましたか? #include<stdio.h> int main(void){ char a; printf("aaa\n"); scanf_s("%c", &a); printf("%c", a); return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1さんが指摘されている通り、scanf_s()の使い方が誤っています。 No.1さんが示されたMSDNライブラリのscanf_sの説明の中に ----------------------------------------------------- scanf および wscanf とは異なり、scanf_s および wscanf_s では、 c、C、s、S の各型、または [] で囲まれた文字列コントロール セットのすべての入力パラメーターに対してバッファー サイズを 指定する必要があります。 バッファー サイズ (文字単位) は、 バッファーまたは変数のポインターの直後に追加パラメーター として渡されます。 ----------------------------------------------------- と明確に書かれています。 この説明に従って、 scanf_s("%c", &a , 1); と書かなければなりません。 複数個のパラメータを受け取るなら、 scanf_s( "%d %f %c %C %s %S", &i, &fp, &c, 1, &wc, 1, s, _countof(s), ws, _countof(ws) ); のように書かなければなりません。 つまり、%c,%sそれぞれ1個に対して2個のパラメータが必要です。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
scanf_sの使い方が間違っているのでは。 http://msdn.microsoft.com/ja-jp/library/w40768et.aspx > 文字の場合、次のように 1 文字読み込む場合もあります。 > char c; > scanf_s("%c", &c, 1);