scanf_s() で文字列を入力

scanf_s() で文字列を入力します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 新しいバージョンではセキュリティの強化から (^_^;) 不正(不用意)なメモリ領域へのアクセスを厳しく管理するようになりました。
    scanf() も警告が発せられるので scanf_s() を使って下さい。
    従来の scanf() 命令です。
        char    file[64];
    
        printf("入力ファイル名をタイプして下さい\n");
        scanf("%s",file);
        
    セキュリティが強化された scanf_s() 命令です。
    scanf_s では %s で受け取る領域のサイズを指定します。
        char    file[64];
    
        printf("入力ファイル名をタイプして下さい\n");
        scanf_s("%s",file,64);
        
    %d などはサイズが決まっているのでサイズの指定はありません。
        char str[16];
        int value;
        scanf_s("%s%d",str,16,&value);
        
  2. fscanf() もセキュリティが強化された fscanf_s() が用意されています。
    使い方は scanf_s() の第一パラメータにファイルポインタを指定するだけです。
    詳細は fscanf_s() でファイルから入力 を参照して下さい。
        int     d1;             //入力領域
        char    s1[6];
    
        fscanf_s(FI,"%d %s",&d1,s1,6);
        

【NOTE】

数値を入力するとき、数字以外の文字がタイプされると、その文字がキーボードバッファに残って以降の入力に悪影響を与えます。
また一文字入力と組み合わせるとキーボードバッファに残っている制御コードなどが入力される場合があります。
そのような時は、次の命令でキーボードバッファをクリアして下さい。
rewind(stdin);

iostream を使っている時は、次の命令を使います。
INT_MAX が最大文字数で '\n' を見つけるまでクリアします。
cin.ignore(INT_MAX,'\n');

超初心者のプログラム入門(C/C++)