在VS2019中C语言编程打开txt文件写入一句话,出现了C28183错误,怎么解决?

代码运行后直接显示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。

失败:


温馨提示:答案为网友推荐,仅供参考
相似回答