В отличие от fopen
, который возвращает тип данных FILE *
, функция fopen_s
возвращает тип данных errno_t
.
В опубликованном вами коде вы передаете адрес переменной fPointer
в функцию fopen_s
, чтобы она записывала эту переменную. Это правильно. Однако впоследствии вы явно назначаете возвращаемое значение функции fopen_s
(которая имеет тип errno_t
) переменной fPointer
, тем самым перезаписывая то, что ранее было записано в эту переменную функцией fopen_s
. Этого не следует делать, так как тип данных errno_t
имеет значение, отличное от типа данных FILE *
.
Кроме того, как правило, вы всегда должны проверять, был ли файл успешно открыт перед используйте FILE *
.
Поэтому вы должны изменить свой код на что-то вроде следующего:
#include <stdlib.h>
int main()
{
FILE* fPointer;
errno_t err;
err = fopen_s(&fPointer,"C:\\asd.txt","w");
if ( err == 0 )
{
fprintf(fPointer, "If ı can read this then ı can create for loop");
fclose(fPointer);
}
else
{
fprintf( stderr, "Error opening file!\n" );
}
return 0;
}