if ((from=fopen(argv[1], "r")) == NULL)
みたいな文が書いてあるCの本の例題をVisual Studio 2013に入れてみると、「fopenは使うな、fopen_sを使え」みたいなふうに怒られる。さらに、argc, argv[]が出てくると、どうしたものか迷う。

1. argc, argv[]=コマンドライン引数の入れ方
コマンドライン引数指定
みたいに、プロジェクトのプロパティのデバッグのコマンド引数に入れる。

で、実行してみてもエラーになる。結局、デバッグモードでのコマンドライン引数指定は.exeファイルと同じ場所ではダメだった。ここに入れなくてはいけない。
argv対象ファイルの場所
consoleappication5の下の、consoleappication5のフォルダで、かつDebugフォルダの上。これを発見するには、一旦fopen_sのパラメータを"w”にして実験してみる必要がある。


2. fopen_s騒動
こことかここに書いてあるけど、初心者がいきなりそれを見てもわからない。

要するに、

int main(int argc, char *argv[])
{
FILE *from, *to;
char ch, watch;
errno_t errno;

/*コマンドライン引数の数確認*/
if (argc < 3){
printf("引数だめだよ\n");
exit(1);
}

/*コピー元ファイルを開く*/
if ((errno = fopen_s(&from, argv[1], "r")) != 0){
printf("コピー元ファイルを開けない\n");
printf("%s\n", argv[1]);
printf("%d", errno);

exit(1);
}

/*コピー先ファイルを開く*/
if ((errno = fopen_s(&to, argv[2], "w")) != 0){
printf("コピー先ファイルを開けない\n");
printf("%s\n", argv[2]);
printf("%d", errno);

exit(1);
}

if (argc == 4 && !strcmp(argv[3], "watch"))
watch = 1;
else
watch = 0;

/*ファイルをコピー*/
while ((ch = fgetc(from)) != EOF){
fputc(ch, to);
if (watch) putchar(ch);
}
fclose(from);
fclose(to);


の青字みたいにすれば動く。赤字みたいなのを加えておくと動作確認できる。