2015-01-13 3 views
-2

Возможно ли записать данные в моем struct в текстовый файл?Как написать структуру в файл C

Ниже мой struct:

struct Person{ 
    int date; 
    char acName[30]; 
    int Weight; 
    float Length; 
    float Quetelet; 
}; 

Ниже, как я пытался записать его в файл:

FILE *fptr; 
fptr = fopen ("hello.txt", "w"); 
if (fptr == NULL){ 
    printf ("Error!"); 
    exit (1); 
} 
fprintf (fptr, "Date: %d\n", p.date); 
fprintf (fptr, "Name: %s\n", p.acName); 
fprintf (fptr, "Weight: %d\n", p.Weight); 
fprintf (fptr, "Length: %f\n", p.Length); 
fprintf (fptr, "Your Quetelet: f", &p.Quetelet); 

fclose (fptr); 

Но когда я пытаюсь это, я получаю следующий результат:

Date: 4201600 
Name: Ðþ(
Weight: 4201600 
Length: 0.000000 
Your Quetelet: 0.000000 
+1

Да, это возможно. Если у вас возникла проблема, вы должны указать, что это за проблема. –

ответ

0

Исходя из очевидного вопроса о том, что на самом деле queteletесть я полагаю, вы не должны пытаться писать адрес этого, особенно без действительного спецификатора формата:

fprintf(fptr,"Your Quetelet: f",&p.Quetelet); 

Вместо этого, дать этому выстрел:

fprintf(fptr,"Your Quetelet: %f",p.Quetelet); 

Если печать на самом деле работает, но вы, кажется, получаете странные значения, убедитесь, что вы устанавливаете переменные на что-то, прежде чем пытаться их распечатать.

+0

если я попробую fprintf (fptr, «Your Quetelet:% f», p.Quetelet); я получаю следующий результат: Дата: 4201600 Имя: DTH ( Вес: 4201600 Длина: 0,000000 Ваш Кетле: 0,000000 – Dutchtechnology

+0

@dutch: да, и проблема в том, что именно Если вы? видя 0, вполне вероятно, что p.Quetelet равен нулю. И вполне вероятно, что ваше имя не инициализировано. – paxdiablo

+0

i allready посмотреть, что происходит, все было 0, потому что функция записи прошла до того, как могут быть установлены другие переменные. И Quetelet похож на то же самое как индекс BMI;) ty – Dutchtechnology

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