【发布时间】:2014-06-09 19:03:18
【问题描述】:
我在使用 C 编程时遇到问题,尤其是在 Visual Studio 中使用 fopen 时。我阅读了fopen_s 函数并将以下行添加到我的项目中,但它仍然不起作用。
_CRT_SECURE_NO_WARNINGS
所以我尝试以这种方式使用fopen_s:
FILE *fp;
errno_t err;
if ((err = fopen_s(&fp, "C:/File.txt", "rt")) != 0)
printf("File was not opened\n");
else
fprintf(fp, "Date: %s, Time: %s, Score: %i \n", __DATE__, __TIME__, score);
fclose(fp);
它仍然在崩溃。怎么了?
【问题讨论】:
-
什么时候崩溃?视觉说什么?
-
“rt”应该代表什么[可能是错误]?这似乎与 MSDN/CRT 相关。试着通过检查你的错误号来找出你得到的错误(不仅仅是比较它是否不为零)。似乎为此目的提供了一个名为 strerror_s 的函数。可以试试吗?
-
“还是不行。”充其量是模糊的。无法打开文件?无法检测到打开文件失败?打开文件但关闭时崩溃?无法打开文件,报告错误,然后在关闭时崩溃(我正在用 hyde 对冲这个赌注)?你能至少稍微更具体一点吗?
-
好的,抱歉。它是:“Janusze Kosmosu.exe 中 0x00BE347E 处未处理的异常:一个无效参数被传递给了一个认为无效参数致命的函数。如果有这个异常的处理程序,程序可以安全地继续。”
-
当 fopen_s() 失败时,应输出相应的信息并退出程序,不要继续下一条语句。顺便说一句:变量 'score' 正在被使用,但没有在任何地方设置,为什么当您从未读取文件时还要打开文件进行读取?
标签: c visual-c++ fopen