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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++ WinAPI]Размер при записи в файл 
V
    Опции темы
yngwie19
Дата 3.4.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет, у меня вот какой вопрос. У меня есть текстовое поле в которое Я ввожу текст, после чего читываю его в массив. Затем этот массив с помощью WriteFile() записываю в файл. Дак вот, в в 3 параметре этой функции нужно указывать размер записываемой информации. Его указывать как sizeof(массив) ? или strlen(массив) ?. Насколько Я понимаю разницы нет.
PM MAIL   Вверх
Andrey44
Дата 3.4.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Цитата(yngwie19 @  3.4.2009,  13:19 Найти цитируемый пост)
Насколько Я понимаю разницы нет. 

Разница есть и большая 
sizeof(массив) - размер массива в байтах
strlen(массив) - размер массива в символах


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
yngwie19
Дата 3.4.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Andrey44, ну а если у меня массив char - ов ?
PM MAIL   Вверх
Andrey44
Дата 3.4.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Если массив чаров тогда размеры равны, но это с чарами.
А если с другим типом тогда разные, да и вообще strlen и sizeof это разные вещи


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
yngwie19
Дата 3.4.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это Я понимаю. Спасибо! smile 
PM MAIL   Вверх
Alca
Дата 3.4.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



strlen - размер Си-шной строки (массив символов, у которого последний - '\0')

Добавлено через 3 минуты и 16 секунд
размер массива можно найти через макрос ARRAYSIZE (можешь глянуть его реализацию)

Добавлено через 3 минуты и 54 секунды
там юзается sizeof


--------------------
PM WWW ICQ Skype Jabber   Вверх
Dem_max
Дата 3.4.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



ну вообщето 
sizeof(массив) - это если заранее известен размер массива на этапе компиляции. Если массив постоянно меняется, то нужно хранить еще его и размер где то.
в Run Time выдаст только размер выделенной памяти а не использованой, не скажет размер динамически выделенной памяти.

strlen(массив)  - вообщем то неправильно, strlen - вычисляет размер строки.

Для примера 
char str[] = "Hello";
sizeof(str)  - будет равно 6
strlen(str) - будет равен 5
sizeof - посчитает строку с нулевым байтом на конце, а strlen без нулевого


Это сообщение отредактировал(а) Dem_max - 3.4.2009, 16:02


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
xvr
Дата 3.4.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Более того,
Код

char buf[100]="Hello";

strlen(buf) == 5
sizeof(buf) == 100

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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