Guest |
Отправлено: 30.05.2005, 20:39 |
|
Не зарегистрирован
|
Как определить сколько символов содержит переменная типа CHAR |
|
** avtoritet |
Отправлено: 31.05.2005, 02:42 |
|
Не зарегистрирован
|
Я поступаю так:
sizeof(переменная — 1); |
|
AVC |
Отправлено: 31.05.2005, 08:18 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Чем отличается "символ" от "CHAR"? |
|
Konstantine |
Отправлено: 31.05.2005, 09:50 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
CHAR или char ?
а вообще можно так: sizeof(CHAR)
|
|
** avtoritet |
Отправлено: 31.05.2005, 11:33 |
|
Не зарегистрирован
|
to Константин:
sizeof(char) вернет тебе 1 байт как ни крути, так ты в этом случае получаешь размер типа.
char str[] = "12345";
sizeof(str) вернет 6 байтов(физический размер переменной), так как в конце еще есть знак окончания "строки", знак которого визуально не видно.
sizeof(str-1) вернет 5 байтов, и это буде длина строки, ведь каждый символ в char = 1 байт |
|
Gedeon |
Отправлено: 31.05.2005, 11:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Да, мы легких путей не ищем
CODE |
int i = strlen(str); |
|
|
AVC |
Отправлено: 31.05.2005, 12:50 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
2** avtoritet
QUOTE (** avtoritet @ 31/05/2005, 10:33) |
to Константин:
sizeof(char) вернет тебе 1 байт как ни крути, так ты в этом случае получаешь размер типа.
char str[] = "12345";
sizeof(str) вернет 6 байтов(физический размер переменной), так как в конце еще есть знак окончания "строки", знак которого визуально не видно.
|
а char str[] = {1,2,3,4};
sizeof(str) вернет 4, которые и были нужны.
Но речь то не о том.
Это размер массива с элементами типа char.
А Guest спрашивал:
- сколько символов содержит переменная типа CHAR
Ответ 1 — char это и есть символ (только по англицки)
|
|
Konstantine |
Отправлено: 31.05.2005, 15:37 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
AVC — Я почти это и имел ввиду.
просто тип char — встроенный, а CHAR — предопределяемый, и может быть определён чему программеру удобно...
а в вопросе было именно CHAR , а его размер и узнаётся через sizeof(CHAR)
|
|
Boyko |
Отправлено: 31.05.2005, 16:17 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 88
|
Думаю что Guest уже знает ответ.
Все таки он спрашивал и теперь знает
и
sizeof()
и
strlen()
и
Help
тоже у него. |
|
avc* |
Отправлено: 31.05.2005, 16:31 |
|
Не зарегистрирован
|
2Konstantine
Вы безусловно правы.
Просто тип CHAR настолько рано определяется, что я решил не придавать значения разнице char и CHAR. |
|
Георгий |
Отправлено: 31.05.2005, 19:23 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
кстати, на некоторых платформах sizeof(char) = 2 |
|
timson |
Отправлено: 01.06.2005, 08:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 82
|
sizeof(WCHAR) == 2, када используется кодировка UNICODE, это видно в файлах *.dfm
|
|
Георгий |
Отправлено: 01.06.2005, 09:13 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
не, это компиляторы под некоторые RISC процессоры так считают, где минимально адресуемыми являются не байты, а пары байт. |
|
timson |
Отправлено: 02.06.2005, 16:05 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 82
|
Да, с железом тоже связано., но и с кодировкой тоже:
CODE | Wninnt.h:
...
typedef unsigned short WCHAR; // wc, 16-bit UNICODE character
... |
Там вроде один байт — кодировка, другой сообственно символ
|
|