Получить хвост строки в C - PullRequest
2 голосов
/ 12 ноября 2010

У меня есть строка, например "100110000111001100010001100011001100100".

Если мне нужно получить хвост этой строки, то есть все, кроме первого элемента, нужно ли копировать каждый символ в новый массив, начиная со второго элемента (O (n)),

или есть более быстрый способ сделать это, например, как-нибудь волшебным образом сместить указатели на 1 место вправо или встроенную функцию?

Ответы [ 3 ]

5 голосов
/ 12 ноября 2010

Если вам не нужно вносить какие-либо изменения в строку, то вы можете просто дать исходный указатель плюс 1, в противном случае вам нужно будет скопировать.

4 голосов
/ 12 ноября 2010

Вы можете просто сделать символ *, который указывает на нужный вам индекс.

char *p = "100110000111001100010001100011001100100";
char *tail = &p[1]; //&p[1] is the same as p+1
printf("p = %s\ntail = %s\n",p,tail);
1 голос
/ 12 ноября 2010

Ничего волшебного в этом нет. Указатель на строку, как указатель на массив, является просто адресом первого элемента.

Базовая арифметика указателей, возьмите существующий указатель, увеличьте его (p++), и у вас есть указатель на «хвост» вашей строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...