dポイントプレゼントキャンペーン実施中!

「a」って打ち込んだら「a」ってでましたか?

#include<stdio.h>

int main(void){

char a;

printf("aaa\n");

scanf_s("%c", &a);

printf("%c", a);

return 0;
}

A 回答 (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個のパラメータが必要です。
    • good
    • 0

scanf_sの使い方が間違っているのでは。



http://msdn.microsoft.com/ja-jp/library/w40768et …
> 文字の場合、次のように 1 文字読み込む場合もあります。
> char c;
> scanf_s("%c", &c, 1);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!