2012-04-15 3 views
0

Допустим, у меня есть string1 = "DDD DXXXX" string2 = "DDXXXX" string3 = "DXXXX"как извлечь подстроку из строки, если длина строки неизвестна

, и если я хочу, чтобы извлечь XXXX все время, то, что это лучший способ в C? substr, strncpy, strndup всем нужно исходное положение.

Является ли регулярное выражение единственным вариантом?

+0

экстрактом вы имеете в виду удалить из строки? – hmjd

ответ

2

Использование strstr() определить местонахождение "XXXX":

char string1[] = "DDXXXX"; 
char* xxxx_ptr = strstr(string1, "XXXX"); 
if (xxxx_ptr) 
{ 
    /* Do something. */ 
} 
1

Если вы знаете, что он всегда находится в конце и фиксированной длине, вы можете рассчитать его начальное положение, вычислив длину строки (strlen()) и вычитая фиксированную длину.

Это предполагает, что подстрока всегда является частью строк вы исследуете

+0

Нет, длина строки, которая следует за целевой подстрокой, является переменной. – user1335161

+0

Это означает, что он должен соответствовать шаблону, который вы можете проверить. в этом случае регулярное выражение, вероятно, является хорошим общим инструментом для атаки на проблему с помощью – Attila

Смежные вопросы