P294 例9.2
以下为书中代码
#include <stdio.h>
//未写头文件#include<stdlib.h>
int main(int argc,char *argv[])
{
char ch;
FILE *fp;
int i;//这里多余
if((fp=fopen(argv[0],"r"))==NULL)//argv[0]表示程序本身
{
printf("not open");
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
return 0;
}
运行该程序报错
修改后
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char ch;
FILE *fp;
if((fp=fopen(argv[0],"r"))==NULL)
{
printf("not open");
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
return 0;
}
运行乱码
且“隐约”显示"This program cannot be run in DOS mode."
在网上提问后改为
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char ch;
FILE *fp;
if((fp=fopen(argv[1],"r"))==NULL)//这里将argv[0]改为argv[1]
{
printf("not open");
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
return 0;
}
运行:
not open
在cmd下输入磁盘目录后 例:E:/>程序名.exe 文件名.txt //或者其他类型,.c也可以打开,.docx会乱码
//程序与文件放同一目录,不同目录会显示not open
成功输出文件内容