--argc; /* argv[0]の分だけ減らす*/
++argv; /* argv[0]を読み飛ばす*/
if (argc == 0) /* パラメータ無し */
do_one(stdin);/*標準入力を処理*/
else{
while (argc--){ ←ここの行のargcは前の--argcを
if ((fp = fopen(*argv,"r")) == NULL)    引き継いでいるのですか?
cant(*argv);               その場合-2されて、argc[1]の場合なら
do_one(fp);                個数0になりcantしてしまうのですが
fclose(fp);
argv++;
}
}
return (0);
}