Поскольку у вас есть один целевой символ, который вы ищете в более длинной строке, чтобы найти первое вхождение, вы можете просто использовать strchr
, чтобы вернуть указатель на желаемый символ в большей строке.В этом случае первый '/'
.Чтобы использовать strchr
для поиска указателя, связанного с первым '/'
, ваш вызов будет просто:
char *p = strchr (link, '/');
Если p
не NULL
, то он был найден в строке.Напомним, что найденный символ был символом-разделителем, который не нужен, поэтому вы перемещаете указатель на 1, чтобы он указывал на первый символ после '/'
.
Простого вызова strlen()
вэта точка скажет вам, сколько символов вы должны скопировать из link
в вашу строку, где вы сохраняете результаты.Затем, используя длину, вы можете просто вызвать memcpy
для копирования из link
, начиная с позиции указателя и до конца строки (включая символ , заканчивающийся нулем ), чтобы получить нужные символы.Краткий пример:
#include <stdio.h>
#include <string.h>
#define MAXTOK 2048
int main (void) {
char link[] = "www.google.com/index/homepage/component.html/sdfsdf",
*p = link,
token[MAXTOK]; /* declare array to hold results */
if ((p = strchr (link, '/'))) { /* check whether '/' found in line */
size_t len = strlen (++p); /* advance pointer by 1, get length */
if (len > MAXTOK - 1) { /* check if length exceeds available */
fputs ("error: string exceeds allowable length.\n", stderr);
return 1;
}
memcpy (token, p, len + 1); /* copy remaining part of string */
printf ("%s\n", token); /* output it */
}
}
Пример использования / Вывод
$ ./bin/charstr_rest
index/homepage/component.html/sdfsdf
Предоставление нужной строки результата.Посмотрите вещи и дайте мне знать, если у вас есть вопросы.