warning C4020: ‘puts’ : 実引数が多すぎます。

明解C言語のソースで


int main (void)
{
 int num;

do {
 printf("非負の整数を入力して下さい:");
 scanf("%d",&num);
 if ( num < 0)

puts("\a負の数を入力しないでください。");
 } while (num < 0);

puts("その数を逆から読むと");
 do {
 puts("%d", num %10);
 num=num/10;
 } while (num >0 );
 puts("です。");

return 0;
}

このようなものがあります。

15行目の puts は本来 printf なんですが置き換えてみました。

そしたら「warning C4020: ‘puts’ : 実引数が多すぎます。」というエラーが発生します。

意味がわからないので調べてみます。

scanfのエラー

Visual Studioでscanfを使うと変なエラーがでる。

どうもscanfは危険な関数だから使わないほうがいいよという警告らしい。

Visual Studioでは

# define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

みたいに書かないといけないようです。

詳しくは理解できませんが、scanfは指定したサイズを超えて読み込む恐れがあるみたです。