Работа с бинарным файлом - на вывод поступает мусор - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть структуры вида
Листинг программы
  1. struct Note
  2. {
  3. char date[20];
  4. int temp;
  5. struct Note *next;
  6. };
  7. struct Pointer
  8. {
  9. Note * first;
  10. Note * last;
  11. };
Я ввожу данные с клавиатуры и добавляю в структуру. Далее вывожу данные в бинарный файл:
Листинг программы
  1. void vyvod_bin(struct Pointer &P)
  2. {
  3. FILE *f;
  4. char bin[] = "binary.txt";
  5. if (!P.first)
  6. printf("Error");
  7. else
  8. {
  9. Note *tmp = P.first;
  10. f = fopen(bin, "w+");
  11. if (f == NULL)
  12. printf("Error");
  13. else
  14. {
  15. while (tmp)
  16. {
  17. fwrite(&tmp->date, sizeof(tmp->date), 1, f);
  18. fwrite(&tmp->temp, sizeof(tmp->temp), 1, f);
  19. tmp=tmp->next;
  20. }
  21. }
  22. fclose(f);
  23. }
  24. }
И потом из двоичного файла вывожу данные на экран:
Листинг программы
  1. void add_to_end2(struct Pointer &P)
  2. {
  3. char date[20];
  4. int temp;
  5. FILE *f;
  6. char bin[] = "binary.txt";
  7. f = fopen(bin, "wb+");
  8. while (!feof(f))
  9. {
  10. fread(&date, sizeof(date), 1, f);
  11. fread(&temp, sizeof(temp), 1, f);
  12. printf("%s %d", date, temp);
  13. }
  14. fclose(f);
  15. }
Проблема в том, что когда вывожу из бинарного файла выводится какая-то чушь вида "ММММММММММММММММММёяы -85556137" Помогите найти ошибку. Заранее спасибо.
С выводом из файла разобрался, нужно было поменять режим файла. Появилась другая проблема: при выводе из файла последний элемент выводится дважды. И вроде бы понятно, что раз выводится два раза, то, скорее всего, в конце текстового файла присутствует пробел. Так и есть, но я не понимаю, откуда он там взялся и как его убрать. Или вовсе не в пробеле дело

Разобрался, не актуально

Решение задачи: «Работа с бинарным файлом - на вывод поступает мусор»

textual
Листинг программы
  1. if (strcmp(date, "") != 0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы