Работа с бинарным файлом - на вывод поступает мусор - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д