Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как убрать \0 у строковых констант

388
04 мая 2006 года
warezhka
129 / / 11.10.2004
Можно ли убрать из строк-констант завершающий \0 в определении?
 
Код:
1)#define s "123"  // по сути определяет "123\0"

2)char s[] = "123" // тоже "123\0" хотя тут можно
  char s[]={'1','2','3'};
7.5K
04 мая 2006 года
sadman
45 / / 21.01.2006
а зачем тебе это надо, если не секрет?
242
04 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by warezhka
Можно ли убрать из строк-констант завершающий \0 в определении?
 
Код:
1)#define s "123"  // по сути определяет "123\0"

2)char s[] = "123" // тоже "123\0" хотя тут можно
  char s[]={'1','2','3'};



я считаю что только так:

 
Код:
char s[]={'1','2','3'};

в остальных случаях ноль добавиться автоматически (сам/а об этом и написал/а)
8.8K
04 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by warezhka
Можно ли убрать из строк-констант завершающий \0 в определении?
 
Код:
1)#define s "123"  // по сути определяет "123\0"

2)char s[] = "123" // тоже "123\0" хотя тут можно
  char s[]={'1','2','3'};

если кто не знает, то символ с кодом 0 в си обозначает конец строки, если ты его уберешь, то не факт, что при выполнении программы у тебя вместо "123" вылезет "123вфаыфва" или что-нибудь вроде того :))

242
04 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by The_Ice
если кто не знает, то символ с кодом 0 в си обозначает конец строки, если ты его уберешь, то не факт, что при выполнении программы у тебя вместо "123" вылезет "123вфаыфва" или что-нибудь вроде того :))



факт что все будет впорядке, если правильно обрабатывать код

8.8K
06 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by OlgaKr
факт что все будет впорядке, если правильно обрабатывать код

не в этом суть важного: с самого начала говорилось о строках (" #define s "123" "). Если правильно обрабатывать код, все конечно будет в порядке, но зачем использовать строку, если сами принципы ее использования не устраивают. К тому же, не понятно чем нулевой символ помешал, хотелось бы цель этих исканий узнать, ну или примерчик не устроившего кода (:

7.5K
06 мая 2006 года
sadman
45 / / 21.01.2006
Цитата:
Originally posted by The_Ice
К тому же, не понятно чем нулевой символ помешал, хотелось бы цель этих исканий узнать, ну или примерчик не устроившего кода (:


во-во, я о том-же. но автор почему-то молчит насчёт того зачем ему это понадобилось.

8.8K
07 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by sadman
во-во, я о том-же. но автор почему-то молчит насчёт того зачем ему это понадобилось.

складывается такое впечатление, что автор сам уже давно забил на эту дискуссию :)

1.8K
07 мая 2006 года
pod
144 / / 05.04.2006
вообшето функция strncpy (и strn...)
не ставит '\0' попробуй, испльзуй её правилно ;)
8.8K
08 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by warezhka
Можно ли убрать из строк-констант завершающий \0 в определении?
 
Код:
1)#define s "123"  // по сути определяет "123\0"

2)char s[] = "123" // тоже "123\0" хотя тут можно
  char s[]={'1','2','3'};

ну а на крайняк можешь просто писать так char s[3]="123".... хотя, по прежнему не понимаю зачем это тебе надо

242
08 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by The_Ice
ну а на крайняк можешь просто писать так char s[3]="123".... хотя, по прежнему не понимаю зачем это тебе надо


компилятор не пропустит ошибку выдаст, или вообще размер не писать или 4

8.8K
09 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by OlgaKr
компилятор не пропустит ошибку выдаст, или вообще размер не писать или 4

ну, это смотря какой компилятор использовать - задавать размер массива руками, по-моему еще никто не запрещал... зачем размер на 4 устанавливать? ведь смысл, в том, чтобы было только 3(!) символа, а не четыре

242
09 мая 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by The_Ice
ну, это смотря какой компилятор использовать - задавать размер массива руками, по-моему еще никто не запрещал... зачем размер на 4 устанавливать? ведь смысл, в том, чтобы было только 3(!) символа, а не четыре



я пользуюсь студией Microsoft Visual Studio 6.0, в ней номер не пройдет, проверено. 4 - потомучто по умолчанию и без споров :) :

 
Код:
кол-во символов в массиве + 1 символ на ноль == размер массива.

Если не тяжело провер у себя и расскажи чем пользуешься
8.8K
10 мая 2006 года
The_Ice
109 / / 04.04.2006
Цитата:
Originally posted by OlgaKr
я пользуюсь студией Microsoft Visual Studio 6.0, в ней номер не пройдет, проверено. 4 - потомучто по умолчанию и без споров :) :
 
Код:
кол-во символов в массиве + 1 символ на ноль == размер массива.

Если не тяжело провер у себя и расскажи чем пользуешься

Borland C++ Builder 6.0 спакойно скомпилировал, а вот Blooshed Dev-C++ 4.9.9.2 сильно ругался :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог