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

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

Войти
Регистрация
Восстановить пароль
 
Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
#1

Копирование в текстовый файл из потока fstream массива типа char - C++

25.06.2014, 20:03. Просмотров 566. Ответов 12
Метки нет (Все метки)

Всем привет!
У меня довольно простой, но очень важный для меня вопрос, ответ на который пока не очевиден...
Если я средствами Windows создал текстовый файл (С помощью notepad.exe), затем записываю в него массив из char, то у меня будет отображаться абракадабра или цифры и английские буквы?
Вопрос появился потому, что я декодирую GIF файл в BMP, затем записываю в буфер void* всю информацию о нем и хочу использовать пиксели из этого буфера. Однако, при копировании этого буфера в файл у меня абракадабра дикая получается... вот я никак и не могу понять: это я буфер неправильно создаю, декодирую что-то не так, или же так и должно быть и нужно wchar_t использовать...
Буду благодарен за помощь! =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 20:03     Копирование в текстовый файл из потока fstream массива типа char
Посмотрите здесь:

Сброс массива char в текстовый файл - C++
Я правильно понимаю, что для этого надо сделать массив на один символ длиннее, чем строка, и вписать последним символом '\0'? Вот моя...

Запись в файл и последующее чтение массива типа char - C++
Добрый вечер! Я должен сделать элементарную программу: в текстовом файле изначально лежат координаты клетки, в которой находится ферзь. Они...

Не открывается текстовый файл для чтения (использовал fstream.h) - C++
#include <fstream> #include <string> #include <conio.h> #include <iostream> using namespace std; void main() { ifstream...

Копирование массива char в буфер обмена компьютера - C++
Здравствуйте. Нужно, чтобы программа могла скопировать какой-либо массив char или string в буфер обмена компьютера и уже после завершения...

Список типа массива char - C++
Здравствуйте! Не могу понять почему не работает такой код: std::list<char> m_logicalDrivesList; nameLogicalDrives = char(65 + i);...

Считать файл в переменную типа char, и работать посимвольно - C++
считать файл в переменную типа char, а дальше с ней нужно работать посимвольно, так вот, как написать while(пока это не последний символ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
25.06.2014, 20:10     Копирование в текстовый файл из потока fstream массива типа char #2
Цитата Сообщение от Divergence Посмотреть сообщение
Однако, при копировании этого буфера в файл у меня абракадабра дикая получается...
Это зависит от способа записи, который выбирается в зависимости от желаемого результата. Если писать бинарные данные - при просмотре в текстовом режиме будет абракадабра.
Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
25.06.2014, 20:22  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #3
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Это зависит от способа записи, который выбирается в зависимости от желаемого результата. Если писать бинарные данные - при просмотре в текстовом режиме будет абракадабра.
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
25.06.2014, 20:26     Копирование в текстовый файл из потока fstream массива типа char #4
Цитата Сообщение от Divergence Посмотреть сообщение
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
Код, который файл пишет, покажите.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2014, 22:07     Копирование в текстовый файл из потока fstream массива типа char #5
Цитата Сообщение от Divergence Посмотреть сообщение
так и должно быть
Пишите в файл не текстовые данные:
Цитата Сообщение от Divergence Посмотреть сообщение
декодирую GIF файл в BMP, затем записываю в буфер void*
Потом рассматриваете файл в текстовом редакторе (блокноте):
Цитата Сообщение от Divergence Посмотреть сообщение
при копировании этого буфера в файл у меня абракадабра дикая получается
Цитата Сообщение от Divergence Посмотреть сообщение
Я записываю fstream в уже созданный текстовый документ, с флагом текстовый документ...
На то, как будет выглядеть содержимое файла, при открытии в текстовом редакторе, это не влияет, а вот записывать и читать такие данные нужно в бинарном режиме, и используя бинарные методы.
Renji
1823 / 1241 / 288
Регистрация: 05.06.2014
Сообщений: 3,551
25.06.2014, 22:17     Копирование в текстовый файл из потока fstream массива типа char #6
Однако, при копировании этого буфера в файл у меня абракадабра дикая получается...
Открывай файл HEX редактором.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 00:32     Копирование в текстовый файл из потока fstream массива типа char #7
Вот, кстати, одна из возможных проблем, если файл с не текстовыми данными открывается не в бинарном режиме.
Истинность конца файла
Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
26.06.2014, 01:17  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #8
Всем спасибо большое за советы!
Изменил тип файла на бинари, заливаю туда инфу, открываю НЕХ редактором.
Но, по прежнему не могу понять это чушь или мой битмап(((
Есть какие-то способы формализовывать, накладывать схему/сетку на бинари файлы, чтобы они отображались хоть как-то понятнее??
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 01:40     Копирование в текстовый файл из потока fstream массива типа char #9
Цитата Сообщение от Divergence Посмотреть сообщение
Изменил тип файла на бинари
Это как? Расширение сменили?
Цитата Сообщение от Divergence Посмотреть сообщение
Но, по прежнему не могу понять это чушь или мой битмап(((
Ваш битмап.
Цитата Сообщение от Divergence Посмотреть сообщение
Есть какие-то способы формализовывать, накладывать схему/сетку на бинари файлы, чтобы они отображались хоть как-то понятнее??
Под "как-то понятнее", что подразумевается? Что, собственно, хотите увидеть? Байты - они и есть байты.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 03:37     Копирование в текстовый файл из потока fstream массива типа char #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Вот, кстати, одна из возможных проблем, если файл с не текстовыми данными открывается не в бинарном режиме.
При записи смешнее:

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main()
{
   unsigned char arr[]={0x0A,0x0D};
   FILE* out = fopen("test.txt","w");
   fwrite((void*)arr,sizeof(arr),1,out);
   fclose(out);
   return 0;
}
Запишется три байта.

Цитата Сообщение от Divergence Посмотреть сообщение
Но, по прежнему не могу понять это чушь или мой битмап(((
Что пишется-то? BMP - его показывает любая гляделка. Если структура - структуру и читать. Да, в HEX по известным смещениям. Если только растр - можно сохранить в RAW c именем высотахширинахbpp.raw и смотреть Irfan View.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2014, 03:59     Копирование в текстовый файл из потока fstream массива типа char #11
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
При записи смешнее:
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Запишется три байта.
А при чтении ещё смешнее: считается опять два байта.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 04:02     Копирование в текстовый файл из потока fstream массива типа char #12
Цитата Сообщение от alsav22 Посмотреть сообщение
А при чтении ещё смешнее: считается опять два байта.
Ну, это если читать будет код того же кодера, если другого - то квест может получить дальнейшее развитие.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 00:01     Копирование в текстовый файл из потока fstream массива типа char
Еще ссылки по теме:

Вывод элемента массива типа char - C++
Объясните кто знает почему когда я вывожу i-й элемент массива посредством cout все отлично а когда printf то выдает ошибку: Тут все...

Передача массива типа char в функцию - C++
Не пойму в чем ошибка, выдает что ошибка в типе char. Объясните пожалуйста что не так. int min() { char ar =...

Заполнение трехмерного динамического массива типа Char - C++
вот само задание : Создать набор функций, позволяющих работать со школьным расписанием. Предположим, что школьник учится 5 дней в неделю...

Преобразования массива с типа int к типу char - C++
Помогите решить задачу. Требуется создать шаблон класса для преобразования массива с типа int к типу char, помогите кто чем сможет буду...


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

Или воспользуйтесь поиском по форуму:
Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
27.06.2014, 00:01  [ТС]     Копирование в текстовый файл из потока fstream массива типа char #13
Народ... я решил создать конкретную тему с реальным примером (то, что именно у меня не получается). Несмотря на все мои старания - все оборачивается провалом... Это описание того, о чем я спрашивал тут но конкретнее.
Если Вам интересно, можете заглянуть:
Вместо информации о пикселях копируется мусор. WIC codecs, CopyPixels
Yandex
Объявления
27.06.2014, 00:01     Копирование в текстовый файл из потока fstream массива типа char
Ответ Создать тему
Опции темы

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