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

Как выглядит нулевой байт? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.78
Diaskop
Сообщений: n/a
26.01.2012, 13:30     Как выглядит нулевой байт? #1
Масивы заканчиваются нулевым байтом "/0", это ясно - надо иметь признак конца, но ("/")= 0x2F и ("0")=0x30 , а это уже два байта.
Вопросы: 1. под "нулевым байтом" подразумевают два байта ?
2. если прочитать конец массива, увижу я 0x2F и 0x30?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 13:36     Как выглядит нулевой байт? #2
Цитата Сообщение от Diaskop Посмотреть сообщение
Масивы заканчиваются нулевым байтом "/0", это ясно
Я такого не слышал.
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 13:42     Как выглядит нулевой байт? #3
Массивы (обычные) ничем не заканчиваются. Массив символов с '\0' (именно одинарные) - строка в стиле C. А \ - спец. символ по-моему.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.01.2012, 13:42     Как выглядит нулевой байт? #4
Цитата Сообщение от Diaskop Посмотреть сообщение
"/0"
Так то \0.
Цитата Сообщение от Diaskop Посмотреть сообщение
1. под "нулевым байтом" подразумевают два байта ?
2. если прочитать конец массива, увижу я 0x2F и 0x30?
Нет. Нет.

Вот для раздумий.
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(void)
{
    printf("%d", '\0');
    return 0;
}
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
26.01.2012, 13:54     Как выглядит нулевой байт? #5
Цитата Сообщение от Pavel.fromBy Посмотреть сообщение
А \ - спец. символ по-моему.
Да, это спец. символ.
Тем самым мы даем знать, что это не очередной символ, а уже конец файла.
Как-то не задавался этим вопросом, но думаю, что в конце будет стоять 0x30.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.01.2012, 13:57     Как выглядит нулевой байт? #6
Цитата Сообщение от zelim Посмотреть сообщение
Как-то не задавался этим вопросом, но думаю, что в конце будет стоять 0x30.
Ага. Т.е. такая строка "1230567" при выводе будет отрубаться на "123"?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 13:57     Как выглядит нулевой байт? #7
Цитата Сообщение от zelim Посмотреть сообщение
Тем самым мы даем знать, что это не очередной символ, а уже конец файла.
Что? А если так
C++
1
"wfde\t\n\tsaf\tsafssad"
Нет, Вы не правы.
cyberguz
6 / 6 / 0
Регистрация: 01.12.2010
Сообщений: 105
26.01.2012, 13:58     Как выглядит нулевой байт? #8
для раздумий лучше:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    char a[] = "abcd /0 123 \r\t\n \x78 \\ \0 ";
 
    for (unsigned int i = 0; i < sizeof(a)/sizeof(*a); i++)
       printf("a[%d] = 0x%02X \n", i, a[i]);
 
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 13:58     Как выглядит нулевой байт? #9
Цитата Сообщение от zelim Посмотреть сообщение
Как-то не задавался этим вопросом, но думаю, что в конце будет стоять 0x30.
нуль-терминал
C++
1
0 == '\0'
C++
1
NULL == 0x00
http://ru.wikipedia.org/wiki/%D0%9D%...BE%D0%BA%D0%B0
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
26.01.2012, 14:00     Как выглядит нулевой байт? #10
Массив не чем не кончается. Это char кончается нулевым байтом, но можно прочитать и следующие, зная его номер. Пример:
Массив 0x11 0x77 0xff 0x00 0x2f 0x90
sizeof выдаст при этом 2. Но можно прочитать 0x90 с помощью [6] или 0x2f [5]
Нулевой байт - 0x00
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 14:00     Как выглядит нулевой байт? #11
Цитата Сообщение от Fusix Посмотреть сообщение
sizeof выдаст при этом 2.
Например?
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
26.01.2012, 14:05     Как выглядит нулевой байт? #12
Цитата Сообщение от soon Посмотреть сообщение
Ага. Т.е. такая строка "1230567" при выводе будет отрубаться на "123"?
Я, вообще-то, имел ввиду, что нуль + '\' даст такой результат.
При чтении строки такого вида "123\0567" мы получим 123 - "остальное", т.е. то, что за '\0', считается мусором.

Цитата Сообщение от go Посмотреть сообщение
Что? А если так
Код C++
1
"wfde\t\n\tsaf\tsafssad"
Нет, Вы не правы.
А где здесь нуль-символ? Читайте меня внимательнее, я имел ввиду комбинацию, а не один слеш.
Придирка неудачна, я прав.

Добавлено через 1 минуту
Цитата Сообщение от zelim Посмотреть сообщение
Да, это спец. символ.
Тем самым мы даем знать, что это не очередной символ, а уже конец файла.
То есть то, что за слешем - уже не просто цифра ноль. Как-то так в общем.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.01.2012, 14:07     Как выглядит нулевой байт? #13
zelim, сами же сказали
Цитата Сообщение от zelim Посмотреть сообщение
думаю, что в конце будет стоять 0x30.
Пост читайте весь. Мой пример был именно к этой фразе.
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
26.01.2012, 14:08     Как выглядит нулевой байт? #14
Цитата Сообщение от Fusix Посмотреть сообщение
Массив не чем не кончается. Это char кончается нулевым байтом, но можно прочитать и следующие, зная его номер. Пример:
Массив 0x11 0x77 0xff 0x00 0x2f 0x90
sizeof выдаст при этом 2. Но можно прочитать 0x90 с помощью [6] или 0x2f [5]
Типичный пример того, как функция sizeof откидывает "мусор".
Так и любые другие функции при чтении массива ищут нуль-символ.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 14:11     Как выглядит нулевой байт? #15
zelim,
Цитата Сообщение от zelim Посмотреть сообщение
А \ - спец. символ по-моему.
Да, это спец. символ.
Тем самым мы даем знать, что это не очередной символ, а уже конец файла.
речь про 0 вообще не шла. Шла речь об '\'
Я Вам привел пример, что Вы в корне не правы...
Цитата Сообщение от zelim Посмотреть сообщение
При чтении строки такого вида "123\0567" мы получим 123 - "остальное", т.е. то, что за '\0', считается мусором.
А если так? http://liveworkspace.org/code/d8d25d...0b370dc7cc52dc
Цитата Сообщение от zelim Посмотреть сообщение
Типичный пример того, как функция sizeof откидывает "мусор".
Этот оператор возвращает размер выделенной памяти памяти... Почитали бы лучше что-нибудь.
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
26.01.2012, 14:11     Как выглядит нулевой байт? #16
Цитата Сообщение от soon Посмотреть сообщение
zelim, сами же сказали

Пост читайте весь. Мой пример был именно к этой фразе.
Это уже своего рода предположение было Я же уточнил, что этим не интересовался и в подробности не вникал ))
Не подумал даже как-то над примером.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.01.2012, 14:12     Как выглядит нулевой байт? #17
Цитата Сообщение от Diaskop Посмотреть сообщение
Масивы заканчиваются нулевым байтом "/0", это ясно - надо иметь признак конца, но ("/")= 0x2F и ("0")=0x30 , а это уже два байта.
Во-первых не "/", а "\", а во вторых это просто спецсимвол, терминальный байт действительно нулевой, то есть 0x00.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.01.2012, 14:12     Как выглядит нулевой байт? #18
Не, пример корявый был в #15
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void)
{
    char str[] = "0123\0 67";
    printf("%d\n", sizeof(str));
    return 0;
}
http://liveworkspace.org/code/c44a9a...26da32950ce01d
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.01.2012, 14:15     Как выглядит нулевой байт? #19
Цитата Сообщение от zelim Посмотреть сообщение
Как-то не задавался этим вопросом, но думаю, что в конце будет стоять 0x30.
Нет. Если без слеша, то было бы 0x30, но слеш даже среди спецсимволов особый, он включает режим спецсимола для следующего и его код меняется. Например, t получает код 0x08, а но - код 0x00.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2012, 14:15     Как выглядит нулевой байт?
Еще ссылки по теме:

C++ Как выглядит конструктор и деструктор для vector ?
C++ Как выглядит string в памяти?
C++ Как выглядит восьмибитная маска в шестнадцатеричной форме?

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
26.01.2012, 14:15     Как выглядит нулевой байт? #20
Ой-вей http://ru.wikipedia.org/wiki/%D0%AD%...BB%D0%BE%D0%B2
Yandex
Объявления
26.01.2012, 14:15     Как выглядит нулевой байт?
Ответ Создать тему
Опции темы

Текущее время: 10:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru