Работа с бинарным файлом - на вывод поступает мусор - C (СИ)
Формулировка задачи:
Есть структуры вида
Я ввожу данные с клавиатуры и добавляю в структуру.
Далее вывожу данные в бинарный файл:
И потом из двоичного файла вывожу данные на экран:
Проблема в том, что когда вывожу из бинарного файла выводится какая-то чушь вида "ММММММММММММММММММёяы -85556137"
Помогите найти ошибку.
Заранее спасибо.
struct Note
{
char date[20];
int temp;
struct Note *next;
};
struct Pointer
{
Note * first;
Note * last;
};void vyvod_bin(struct Pointer &P)
{
FILE *f;
char bin[] = "binary.txt";
if (!P.first)
printf("Error");
else
{
Note *tmp = P.first;
f = fopen(bin, "w+");
if (f == NULL)
printf("Error");
else
{
while (tmp)
{
fwrite(&tmp->date, sizeof(tmp->date), 1, f);
fwrite(&tmp->temp, sizeof(tmp->temp), 1, f);
tmp=tmp->next;
}
}
fclose(f);
}
}void add_to_end2(struct Pointer &P)
{
char date[20];
int temp;
FILE *f;
char bin[] = "binary.txt";
f = fopen(bin, "wb+");
while (!feof(f))
{
fread(&date, sizeof(date), 1, f);
fread(&temp, sizeof(temp), 1, f);
printf("%s %d", date, temp);
}
fclose(f);
}
С выводом из файла разобрался, нужно было поменять режим файла.
Появилась другая проблема: при выводе из файла последний элемент выводится дважды. И вроде бы понятно, что раз выводится два раза, то, скорее всего, в конце текстового файла присутствует пробел. Так и есть, но я не понимаю, откуда он там взялся и как его убрать. Или вовсе не в пробеле дело
Разобрался, не актуально
Решение задачи: «Работа с бинарным файлом - на вывод поступает мусор»
textual
Листинг программы
if (strcmp(date, "") != 0)