【发布时间】:2018-06-07 15:53:52
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
...
int function () {
FILE *f;
f = fopen("list.txt", "rb+");
...
int value;
if (_chsize_s(f, value) == 0) return 1;
}
由于某种原因,上面的 sn-p 代码在 MS Visual Studio 中运行时,会在 _chsize_s() 函数处产生错误。弹出以下消息:
Debug Assertation Failed!
Expression: (fh >= 0 && (unsigned)fh < (unsigned)_nhandle)
我不知道该怎么做,更不用说如何解决了。任何帮助将不胜感激。
【问题讨论】:
-
编译时应该会收到其他警告,可能与隐式声明有关。这些警告必须修复,它们告诉你真正的错误在哪里。
-
你应该得到一个关于这个的编译器警告。
_chsize_s()的参数应该是int,而不是FILE*。 -
@Barmar 我很困惑......如果要传递的参数类型是 int,我该如何提及我想要截断的文件?对不起,如果这听起来非常愚蠢。如果可能的话,一个工作示例或示例会很棒!
标签: c file file-io visual-studio-2017