Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение\запись char* в файл 
:(
    Опции темы
Solomon
Дата 30.7.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Вообщем суть вот в чем... у меня есть в наличии две переменные int это как бы размер 
и чаровский массив char* 
как это все культурно сохранить и потом считать из файла.. особено меня интересует char*... 
И еще небольшой вопросик? char переменную если сохранять как символ или бинарно будет отличие в размере файла? 


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
_hunter
Дата 30.7.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



ReadFile/WriteFile...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Solomon
Дата 30.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



_hunter, чего??? а это то тут причем?? мне в консоле надо стандартными средствами...
записать в файл надо два инта lnt и потом чаровский массив на кот у нас есть указатель.. и соответственно считать потом это все 



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Kuvaldis
Дата 30.7.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



Solomon, 
Цитата

И еще небольшой вопросик? char переменную если сохранять как символ или бинарно будет отличие в размере файла? 

Нет, разницы не будет, так как char знаимает 1 байт

Добавлено через 2 минуты и 5 секунд
Делай бинарый файл, записывай сначала туда int, а потом строку 
все операции: fread /fwrite (или через файловый дескриптор и read / write )  


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Daevaorn
Дата 30.7.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Solomon @  30.7.2007,  16:48 Найти цитируемый пост)
как это все культурно сохранить и потом считать из файла.. особено меня интересует char*... 

сохранить длину строки, потом саму строку непосредственно(как массив байт). чтение наоборот - прочитать размер, выделить нужное количество памяти для строки и прочитать туда строку( тоже как массив).
Цитата(Solomon @  30.7.2007,  16:48 Найти цитируемый пост)
И еще небольшой вопросик? char переменную если сохранять как символ или бинарно будет отличие в размере файла?  

нет
PM MAIL WWW   Вверх
bsa
Дата 30.7.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



тут есть варианты. Вот вариант сохранения в бинарный файл:
Код
int size;
const char *text = "some text";
int fd = open("file", O_BINARY | O_CREAT | O_WRONLY, S_IREAD | S_IWRITE);
size = strlen(text);
if (fd >= 0) {
    write(fd, &size, sizeof(size) );
    write(fd, text, size);
    close(fd);
}
//чтение
fd = open("file", O_BINARY | O_RDONLY, S_IREAD | S_IWRITE);
char *new_text;
if (fd >= 0) {
    read(fd, &size, sizeof(size) );
    if (size > 0) {
         new_text = (char*)malloc(size+1);
         read(fd, text, size);
         text[size] = '\0';
    } else
         text = NULL;
    close(fd);
}

PM   Вверх
Daevaorn
Дата 30.7.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Kuvaldis @  30.7.2007,  17:06 Найти цитируемый пост)
Нет, разницы не будет, так как char знаимает 1 байт

не факт, но в 95% конечно 1 байт.
PM MAIL WWW   Вверх
Solomon
Дата 30.7.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Цитата(Daevaorn @  30.7.2007,  15:08 Найти цитируемый пост)
сохранить длину строки
 ну вообщем длинну строки можно получить перемножив две интовские переменные и еще их перемножив на 3...



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Daevaorn
Дата 30.7.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Solomon @  30.7.2007,  17:10 Найти цитируемый пост)
 ну вообщем длинну строки можно получить перемножив две интовские переменные и еще их перемножив на 3...

ну это ты конечно сморозил не то что-то...
PM MAIL WWW   Вверх
Solomon
Дата 30.7.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



ну вообщес из вышесказанного думаю разберусь.. если будут еще вопросы то напишу... всем спасибо

Добавлено через 2 минуты
Цитата(Daevaorn @  30.7.2007,  15:12 Найти цитируемый пост)
ну это ты конечно сморозил не то что-то...

да нет..  smile 
просто вот какая ситуация.. картинку представляеш? две переменные это её размеры... еще на 3 - это каждый пикчель имеет три значения.. вот эти то значения и хранятся в массиве char* впринципе практически структура bmp файла... 



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Daevaorn
Дата 30.7.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Solomon @  30.7.2007,  17:12 Найти цитируемый пост)
да нет..  smile 
просто вот какая ситуация.. картинку представляеш? две переменные это её размеры... еще на 3 - это каждый пикчель имеет три значения.. вот эти то значения и хранятся в массиве char* впринципе практически структура bmp файла... 

ну это твое дело как ты его получаешь. просто нужно точно знать размер массива и этот размер записать в файл.
PM MAIL WWW   Вверх
akizelokro
  Дата 31.7.2007, 11:04 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



а в char * у тебя только текстовуха? 0x00 не стоят где попало? или еще какая попало явно не текстовуха? бинарник всяко лучше. 
инты лучше не писать. sizeof выдаст на одном компе 2 байта, на другом 4. лучше принудительно пиши 2 байта, либо пиши лонги, они имхо чаще 4 байта., хотя к интам они могут свестись коряво?! (signed-unsigned) потом бросай собственно битовуху c уверенностью что об символ конца файла не обломишься нигде.

Это сообщение отредактировал(а) akizelokro - 31.7.2007, 11:19


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1317 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.