В файл выводится мусор - 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) ) { /* ошибка при закрытии файла */ }
Объяснение кода листинга программы
- Открывается файл
test.txt
в режиме записи (fopen(test.txt
,w
)). - Проверяется успешность открытия файла (если fp == NULL, то произошла ошибка).
- Записывается в файл значение переменной d (fprintf(fp,
%f
, d)). - Записывается в файл значение переменной i (fprintf(fp,
%d
, i)). - Записывается в файл значение переменной l (fprintf(fp,
%ld
, l)). - Проверяется успешность записи в файл (если результат fprintf < 0, то произошла ошибка).
- Закрывается файл (fclose(fp)).
- Проверяется успешность закрытия файла (если результат fclose != 0, то произошла ошибка).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д