_chsize вызывает ошибку диссертации на visual studio 2017 - PullRequest
0 голосов
/ 07 июня 2018
#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;
}

По какой-то причине вышеприведенный фрагмент кода при запуске в MS Visual Studio генерирует ошибку в функции _chsize_s ().Появляется следующее сообщение:

Debug Assertation Failed!
Expression: (fh >= 0 && (unsigned)fh < (unsigned)_nhandle)

Я понятия не имею, что с этим делать, а тем более как это исправить.Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 07 июня 2018

Вы игнорируете предупреждения компилятора или отключили их.Чтобы исправить предупреждение о неявном объявлении, вы должны включить заголовок для _chsize_s:

#include <io.h>

. Это исправит предупреждение о неявном объявлении и обнаружит ошибку, что _chsize_s вызывается сневерный тип.Правильный способ его вызова:

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
...
int function(void) {
    FILE *f;
    f = fopen("list.txt", "rb+");
    ...
    int value;
    if (_chsize_s(_fileno(f), value) == 0) return 1;
}

Это показывает, как важно не игнорировать предупреждения компилятора (за исключением ... большинство здравомыслящих людей определят _CRT_SECURE_NO_WARNINGS при написании C с MSVC).

...