Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
#1

ВВод / вывод - C++

05.04.2013, 16:16. Просмотров 267. Ответов 7
Метки нет (Все метки)

Вот код. Здесь я записываю три числа разного типа в текстовый файл test.txt. Но в файле отображаются странные символы. Почему так может происходить? Как это можно исправить? Вот какой вывод внутри файла:
ц(\ЏВu(@e Џа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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;
}
Добавлено через 2 минуты
При этом функции frpintf и fscanf справляются с этой ситуацией нормально.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 16:16     ВВод / вывод
Посмотрите здесь:

Ввод /вывод на С++ - C++
мне нужна программа которая сможет с введённых слов находить гласных буквы заранее спасибо))

ввод-вывод данных - C++
Доброго времени суток! Начала изучать С++ и запуталась в простейшей программке :( Буду признательна за совет Задача: считать два числа...

Двоичный ввод-вывод - C++
Здравствуйте! Разбираюсь с вводом-выводом из файла и наткнулась на такую ситуацию. Ввожу объекты разных классов в разброс в файл с...

Посимвольный ввод/ вывод - C++
Всем, доброго времени суток. Прошу помочь с одной программкой, с которой есть проблемы.. Необходимо разработать и отладить процедуру...

Файловый ввод / вывод - C++
Помогите пожалуйста с задачей: Записать в файл F последовательного доступа n натуральных чисел. Получить в другом файле последовательного...

Ввод / вывод. Кириллица. - C++
Помогите плиз! Эта программа выводит строки в которых есть слово) Программа работает только с латинским алфавитом! Как переделать на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 16:19     ВВод / вывод #2
Цитата Сообщение от bgm123 Посмотреть сообщение
printf("%f %d %ld", d, i, l);
Первое, что бросилось в глаза
C
1
printf("%lf %d %ld\n", d, i, l);
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
05.04.2013, 16:23  [ТС]     ВВод / вывод #3
Это уже относится к выводу на консоль. Основная непонятность - почему в текстовом файле оказывается не то, что я туда записываю (это в случае просмотра файла). НО если программно прочитать этот файл, то всё совпадает.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 16:28     ВВод / вывод #4
Цитата Сообщение от bgm123 Посмотреть сообщение
НО если программно прочитать этот файл, то всё совпадает.
Зачем голову всем ломать? Потому что файл бинарный, и не за чем его открыть как текстовый. Просматривайте по байтам.

Добавлено через 33 секунды
Цитата Сообщение от bgm123 Посмотреть сообщение
При этом функции frpintf и fscanf справляются с этой ситуацией нормально.
Они записывают текстовую информацию.
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
05.04.2013, 16:37  [ТС]     ВВод / вывод #5
Цитата Сообщение от go Посмотреть сообщение
Зачем голову всем ломать? Потому что файл бинарный, и не за чем его открыть как текстовый. Просматривайте по байтам.

Добавлено через 33 секунды

Они записывают текстовую информацию.
Я тоже об этом подумал и изменил режим открытия на "w+" при этом ситуация не изменилась. Почему так может происходить?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 16:46     ВВод / вывод #6
Цитата Сообщение от bgm123 Посмотреть сообщение
Я тоже об этом подумал и изменил режим открытия на "w+" при этом ситуация не изменилась. Почему так может происходить?
fread/fwrite
Цитата Сообщение от bgm123 Посмотреть сообщение
int i = 101;
Как вы думаете, как это число выглядит в памяти?
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
05.04.2013, 16:57  [ТС]     ВВод / вывод #7
Я правильно понял, что функции fread и fwrite записывают просто набор битов, а не сами значения, которые указаны в моей программе?

Добавлено через 37 секунд
А блокнот их трактует как символы, при этом он берёт для каждого символа по байту?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 17:09     ВВод / вывод
Еще ссылки по теме:

Блоковый ввод-вывод - C++
Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление...

Блоковый ввод-вывод - C++
Прошу помочь в решении задачи на С++. Пока что у меня с этим тяжко...! Постановка задачи: Сформировать двоичный файл из...

Ввод/вывод кириллицы - C++
Здравствуйте. Ситуация такая. Я ввожу/вывожу символьный массив подобным образом: char a; cin &gt;&gt; a; cout &lt;&lt; a; С латиницей...

Ввод/Вывод в стиле С++ - C++
Здравствуйте, я написал программу на Си и теперь мне нужно перевести её на С++. У меня есть две функции - функции ввода с клавиатуры и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 17:09     ВВод / вывод #8
bgm123, да.
Yandex
Объявления
05.04.2013, 17:09     ВВод / вывод
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru