В файл выводится мусор - 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, то произошла ошибка).