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

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

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

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

05.04.2013, 16:16. Просмотров 272. Ответов 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 справляются с этой ситуацией нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 16:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ВВод / вывод (C++):

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод - C++
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку с клавиатуры и переводит её в двоичный код. затем наоборот...

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

Запись выражений, ввод–вывод информацииЗапись выражений, ввод–вывод информации - C++
Задача 2.1. Пользуясь только операцией умножения, вычислить (A в 7-ой степени) за четыре операции. Задача 2.2. Очистить экран,...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод) - C++
Как сделать чтобы список студентов выводился на экран в конце? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

7
go
Эксперт С++
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);
1
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
05.04.2013, 16:23  [ТС] #3
Это уже относится к выводу на консоль. Основная непонятность - почему в текстовом файле оказывается не то, что я туда записываю (это в случае просмотра файла). НО если программно прочитать этот файл, то всё совпадает.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 16:28 #4
Цитата Сообщение от bgm123 Посмотреть сообщение
НО если программно прочитать этот файл, то всё совпадает.
Зачем голову всем ломать? Потому что файл бинарный, и не за чем его открыть как текстовый. Просматривайте по байтам.

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

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

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

Добавлено через 37 секунд
А блокнот их трактует как символы, при этом он берёт для каждого символа по байту?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.04.2013, 17:09 #8
bgm123, да.
0
05.04.2013, 17:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 17:09
Привет! Вот еще темы с ответами:

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. - C++
Написать программу, осуществляющую ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. Подключить...

ВВОД-ВЫВОД!!!! - C++
Неправльно! Вообще ничего не выводит..... Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) улица,...

Ввод/вывод в MS VS - C++
Здравствуйте! У меня похожая проблема ... только у меня Вижуал С++ (русская версия) ... - только-только установила ... При...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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