tookunn’s diary

主に競技プログラミング関係

C++ scanf() scanf_s() 自分メモ

#include <iostream>
using namespace std;
int main()
{
    int N;
    cin >> N;
}

みたいな感じでcin>>を使う。
競技プログラミングなどで実行速度を速くしたい時は、cinではなくscanf()を使った方が良い。

int main()
{
    int N;
    scanf("%d", &N);
    printf("%d\n", N);
}

しかし、上記のソースコードをVisualStudioで実行すると、エラーが出る。

error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

だから素直にscanf_s()を使う。
AOJなどのオンラインジャッジではscanf()に直してから提出する。

int main()
{
    int N;
    scanf_s("%d", &N);
    printf("%d\n", N);
}

文字列を扱うときは注意。

int main()
{
    char ch[20];
    scanf_s("%s", ch,20);
    printf("%s\n", ch);
}

文字列を扱うときはscanf_s()に第三引数が必要。
第三引数で指定した文字数以上の文字が入力されると変数に格納されないっぽい。