2013-12-01 2 views
0

У меня проблема с функцией, которая должна писать структуру в файл, файлы создаются, но они остаются пустыми, что бы я ни делал.Проблема написания структуры в файл

Это структура, что я пытаюсь записать в файл:

typedef struct 
{ 
    double dA; 
    double dA1; 
    double dB; 
    double dB1; 
    double dAwnser; 
    char cStepOne[24]; 
    char cStepTwo[24]; 
    char cStepThree[20]; 
    char cFormula[26]; 
} equationData_t; 
equationData_t equation; 

Это функция для записи в-структуру файла:

void writeDataToFile(equation) 
{ 
    int iSizeOfStruct = 0; 
    char cFileName[20]; 
    int iQuitProgram = 0; 
    iSizeOfStruct = sizeof(equationData_t); 
    while (1) 
    { 
     printf("Give file name with extension (Max 20 char.):\n:"); 
     scanf("%s",&cFileName[0]); 
     pnf = fopen(cFileName, "r+"); 
     if (pnf == NULL) 
     { 
      printf ("\nError: File not found!\n1.Try again.\n2.Quit.\n3.Make new file.\n:"); 
      scanf("%d",&iQuitProgram); 

      switch(iQuitProgram) 
      { 
       case 1: break; 
       case 2: exit(1); 
       case 3: makeNewFile(); 
      } 

     } 
     if (pnf != NULL) 
     { 
      printf("\n************************************\nFile opend!\nWriting data to file.\n"); 
      fwrite(equation, iSizeOfStruct, 1, pnf); 
      fclose(pnf); 
      printf("Data written"); 
      break; 
     } 
    } 
} 
+2

Не могли бы вы показать реальный код. Параметр с именем 'equation' не имеет типа. И так что код явно явно недействителен. –

+0

Это «настоящий» код, я могу дать вам «весь» код, все 275 строк, но я не могу сделать его более реальным ..... – user110236

+0

Можете ли вы объяснить, как 'void writeDataToFile (уравнение)' компилирует? Параметры имеют типы и имена. –

ответ

1

Вы можете попробовать использовать open(), а затем pwrite() вместо fopen() и fwrite().

Однако в вашем коде:

fwrite(equation, iSizeOfStruct, 1, pnf); 

должен быть изменен:

fwrite(&equation, iSizeOfStruct, 1, pnf); 
+0

Как вы можете сказать, что, когда вы не знаете, что такое «уравнение»? Компилятор, очевидно, счастлив, что он является указателем и конвертируется в 'void *'. –

+1

Я просто догадываюсь, поскольку struct определяется как уравнение typedef equationData_t; – dAm2K

+1

FWIW Я собирался опубликовать тот же ответ. 'equation' имеет тип' equationData_t', определенный в верхнем блоке кода. – Cheeseminer

Смежные вопросы