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

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

Восстановить пароль Регистрация
 
Sammm
3 / 3 / 1
Регистрация: 21.10.2012
Сообщений: 182
02.07.2013, 23:08     Почему длина данной строки равна 11? #1
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 23:08     Почему длина данной строки равна 11?
Посмотрите здесь:

C++ Выбрать те слова, длина которых равна заданному числу
C++ Необходимо изменить строку так, чтобы длина строки стала равна заданной длине
строки в с++ проверить является четным числом длина введенной пользователем строки и вывести сообщение на экран C++
появилась загвоздка с функцией. нужно вывести на экран строку, сост. из звездочек. Длина строки-параметр функциииз звезд. длина строки - C++
Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Divinesites
 Аватар для Divinesites
106 / 101 / 6
Регистрация: 29.06.2013
Сообщений: 283
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
Сообщений: 283
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
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,890
Записей в блоге: 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?
Еще ссылки по теме:

Длина short[] - Почему размер массива внутри make отличается? C++
C++ Почему в данной программе числа не генерируются, а остаются прежними?
C++ Чему равна длина Char*

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

Или воспользуйтесь поиском по форуму:
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?
Ответ Создать тему
Опции темы

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