Моя функция, которая записывает в файл:
Record_t * load_Record(FILE * infile)
{
Record_t *r;
char title[TITLE_SIZE];
char [MEDIUM_SIZE];
int ID, rating;
if ((fscanf(infile,"%d: %s %d", &ID, medium, &rating) != 3 && fgets(title, TITLE_SIZE, infile))){
return NULL;
}
printf("medium is: %s title is: %s\n", medium, title);
r = create_Record(medium, title);
set_Record_rating(r, rating);
return r;
}
, где Record_t определяется как:
typedef struct Record {
int ID;
char * title;
char * medium;
int rating;
} Record_t;
Моя основная:
#include "Record.h"
#include <stdlib.h>
int main()
{
char * title = "The Queen";
char * medium = "DVD";
FILE * pfile ;
struct Record *t = create_Record(medium, title); //creates a record
struct Record *s;
set_Record_rating (t, 3);
print_Record(t);
pfile = fopen("output.txt", "w");
save_Record(t, pfile);
fclose(pfile);
destroy_Record(t); //de-allocates memory
pfile = fopen("output.txt", "r");
if(!(s = load_Record(pfile))){
return 1;
}
print_Record(s);
fclose(pfile);
destroy_Record(s);
return 0;
}
output.txtпосле записи в файл:
1: DVD 3 The Queen //checked for excess whitespace(has newline however)
Вывод на терминал:
1: The Queen DVD 3
medium is: DVD title is: � //title being saved inappropriately
@
2: �
@ DVD 3
теперь моя fgets неправильная функция!По какой-то причине заголовок сохраняется ненадлежащим образом
Я собираю со следующими флагами: gcc -ansi -std = c89 -pedantic -Wmissing-prototypes -Wall test.c Record.c -o test
где test.c - мой главный