Я пытаюсь создать файл и записать на него некоторые данные, но при запуске следующей программы кода запускается ошибка: Ошибка 1 ошибка C2664: 'errno_t fopen_s (FILE **, const char *, Const символ *)»: не удается преобразовать аргумент 1 из 'FILE *' до 'FILE **'Прочитать ошибку файла C_language
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
FILE *myFile;
int main()
{
int age;
age = 24;
fopen_s(myFile,"C:\\inetpub\\wwwroot\\DATA.EMP", "w");
if (myFile == 0){
printf("Error opening the file\n");
exit(1);
}
fprintf(myFile, "I am %d years old \n", age);
fclose(myFile);
getchar();
return 0;
}
, что может быть причиной?
Ошибка компилятора говорит вам довольно четко. 'fopen_s' ожидает arg 1 типа' FILE ** ', и вы даете ему' FILE * '. Попробуйте с первым arg' & myFile'. – kaylum
Я понимаю, я уже объявлен как FILE ** myFile; но это дает мне еще одну ошибку Degub Assertion! программа: .... al studio 2013 \ projects \ file_pointer1 \ debug \ file_pointer1.exe Файл: f: \ dd \ vctools \ crt \ stdio \ fopen.c Строка: 159 Выражение: (pfile! = NULL) # включая #include FILE ** myFile; int main() { \t int age; \t возраст = 24; \t fopen_s (myFile, "C: \\ inetpub \\ wwwroot \\ DATA.EMP", "w"); \t if (myFile == 0) { \t \t printf ("Ошибка открытия файла \ n"); \t \t выход (1); \t} \t fprintf (* myFile, "Я% d лет \ n", возраст); \t fclose (* myFile); \t getchar(); \t возвращение 0; } –
JFC
Нет, не делайте этого! Это будет скомпилировано, но будет работать во время выполнения, как вы выяснили. Вызов fopen_s будет отменять первый аргумент. Вы должны дать ему указатель на выделенную память. Сделав вашу переменную 'ФАЙЛ **', вы передаете недопустимый указатель на fopen_s. Сделайте то, что было предложено: объявите как 'FILE *' и передайте '& myFile' в' fopen_s'. И вы, вероятно, захотите освежить указатели, прежде чем продолжить. – kaylum