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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
#1

Почему длина данной строки равна 11? - C++

02.07.2013, 23:08. Просмотров 379. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
#include<stdio.h>
#include<string.h>
int main(){
char *str="ax\x12+b\029\\a\"!";
printf("a=%d\n",strlen(str));
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Divinesites
 Аватар для Divinesites
106 / 101 / 6
Регистрация: 29.06.2013
Сообщений: 286
03.07.2013, 00:00     Почему длина данной строки равна 11? #2
Все дело в обратных слэшах. Они просто экранируют символы. Одиночный обратный слэш, например, не учитывается при подсчете strlen(str)
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
03.07.2013, 00:13  [ТС]     Почему длина данной строки равна 11? #3
Enero, А почему в этой строке
C++
1
char *str="ax\x12+b\029\\a\"!";
что-то выделено красным, а что-то нет. По какому принципу форум автоматически выделяет некоторые символы?
Divinesites
 Аватар для Divinesites
106 / 101 / 6
Регистрация: 29.06.2013
Сообщений: 286
03.07.2013, 00:40     Почему длина данной строки равна 11? #4
Цитата Сообщение от Sammm Посмотреть сообщение
По какому принципу форум автоматически выделяет некоторые символы?
К сожалению, на данный вопрос я ответить вам не могу. Вы можете узнать об этом у администраторов или модераторов этого форума.
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
03.07.2013, 01:03  [ТС]     Почему длина данной строки равна 11? #5
Enero, Можете сказать, какие символы в этой строке увеличивают значение strlen(str) а какие нет?
C++
1
char *str="ax\x12+b\029\\a\"!";
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12501 / 7063 / 793
Регистрация: 27.09.2012
Сообщений: 17,447
Записей в блоге: 2
Завершенные тесты: 1
03.07.2013, 01:13     Почему длина данной строки равна 11? #6
Потому что такой слеш используется для обозначения специальных символов или кодов символов. Например, если после слеша стоит символ 'x', значит ожидается код символа в шестнадцатеричной системе счисления, если '0', то в восьмеричной, если 't', то табуляция и т.д., сам же слеш в строку не входит. Чтобы записать в литерал слеш, нужно использовать двойной слешь '\\'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 03:08     Почему длина данной строки равна 11?
Еще ссылки по теме:

Напечатать все строки файла, длина которых равна заданному значению C++
Длина short[] - Почему размер массива внутри make отличается? C++
C++ Почему в данной программе числа не генерируются, а остаются прежними?
C++ Чему равна длина Char*
C++ Сформировать стек всех слов, длина которых меньше либо равна 5

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

Или воспользуйтесь поиском по форуму:
Artimosha
0 / 0 / 0
Регистрация: 30.06.2013
Сообщений: 12
03.07.2013, 03:08     Почему длина данной строки равна 11? #7
char *str="ax\x12+b\029\\a\"!";
строка сама является таковой: ax↕+b☻9\a"!

все красное - символы.
\\ экранирует слеш, \" экранирует кавычку и тд.
Вид \х и \0 с продолжением(синий фон) коды выводимых символов в разных системах счисления(0 - для восьмеричной, х для 16-ричной).
Тут могу и ошибиться, но скорее всего, это так.
Yandex
Объявления
03.07.2013, 03:08     Почему длина данной строки равна 11?
Ответ Создать тему
Опции темы

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