fscanfを使おうとすると、「fscanf_sを使え」と怒られる件。

例えばグローバルでこういうの宣言して、

char names[100][40];
char numbers[100][40];


こういうのを作った時、

void load(void){
FILE *fp;
errno_t errno;

if ((errno = fopen_s(&fp, "phone", "r")) != 0){
printf("ファイルを開けない\n");
printf("%d", errno);
exit(1);
}

loc = 0;
while (!feof(fp)){
printf("%s%s", names[loc], numbers[loc]);
fscanf_s(fp, "%s%s", names[loc], 40, numbers[loc], 40);
loc++;
}
fclose(fp);
}


fscanf_sのパラメータで、各変数の後にその大きさ(赤字で書いたもの)を入れないと、コンパイルは通るが実行時エラーで落ちる。

*** fscanf_s だけでなく、gets_s / strcpy_s(これはコンパイルも通らない)も同様。