代码运行后直接显示cannot open file,完全不打开txt文件
#include<stdio.h>
main()
{
FILE* fp; //定义一个指向FILE类型结构体的指针变量
char ch;//定义变量为字符型
if ((fp = fopen_s(&fp,"E:\\exp01.txt", "w")) == NULL)//以只写方式打开指定文件
{
printf("cannot copen file\n");
exit(0);
}
ch = getchar(); //getchar函数带回一个字符赋给ch
while (ch != '#') //当输入'#'时结束循环
{
fputc(ch, fp); //将读入的字符写到磁盘文件中
ch = getchar(); //getchar函数继续带回一个字符赋给ch
}
fclose(fp); //关闭文件}
这里主要的问题是理解错了fopen_s函数的返回值。
它的返回值不是文件指针,是错误代码。这句if ((fp = fopen_s(&fp,"E:\\exp01.txt", "w")) == NULL)改成
errno_t ecode;
if ((ecode = fopen_s(&fp,"E:\\exp01.txt", "w")) == 0)
fopen_s函数原型:
errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );
函数参数
pFile:文件指针将接收到打开的文件指针指向的指针。
infilename:文件名。
inmode:允许的访问类型。
---------------------------------------------------
返回值:
如果成功返回0。
失败: