В файл выводится мусор - C (СИ)

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

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

Вот код. Здесь я записываю три числа разного типа в текстовый файл test.txt. Но в файле отображаются странные символы. Почему так может происходить? Как это можно исправить? Вот какой вывод внутри файла: ц(\ЏВu(@e Џа
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
  FILE *fp;
  double d = 12.23;
  int i = 101;
  long l = 123023L;
 
  if((fp=fopen("test.txt", "wb+"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    exit(1);
  }
 
  fwrite(&d, sizeof(double), 1, fp);
  fwrite(&i, sizeof(int), 1, fp);
  fwrite(&l, sizeof(long), 1, fp);
 
  rewind(fp);
 
  fread(&d, sizeof(double), 1, fp);
  fread(&i, sizeof(int), 1, fp);
  fread(&l, sizeof(long), 1, fp);
 
  printf("%f %d %ld", d, i, l);
 
  fclose(fp);
 
  return 0;
}

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

textual
Листинг программы
/*...*/
if ( ! ( fp = fopen("test.txt", "w") ) ) {
    /* ошибка открытия файла */
}
if ( fprintf(fp, "%f, %d, %ld", d, i, l) < 0 ) {
    /* ошибка записи в файл */
}
if ( fclose(fp) ) {
    /* ошибка при закрытии файла */
}

Объяснение кода листинга программы

  1. Открывается файл test.txt в режиме записи (fopen(test.txt, w)).
  2. Проверяется успешность открытия файла (если fp == NULL, то произошла ошибка).
  3. Записывается в файл значение переменной d (fprintf(fp, %f, d)).
  4. Записывается в файл значение переменной i (fprintf(fp, %d, i)).
  5. Записывается в файл значение переменной l (fprintf(fp, %ld, l)).
  6. Проверяется успешность записи в файл (если результат fprintf < 0, то произошла ошибка).
  7. Закрывается файл (fclose(fp)).
  8. Проверяется успешность закрытия файла (если результат fclose != 0, то произошла ошибка).

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


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

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

10   голосов , оценка 3.7 из 5
Похожие ответы