Установить строку для подстроки в C - PullRequest
0 голосов
/ 05 мая 2011

У меня есть длинная строка, которую я хочу снять с конца.Я хочу избавиться от всего после символа «<» (включительно).Вот код, который работает: </p>

char *end;
end = strchr(mystring, '<');
mystring[strlen(mystring) - strlen(end)] = '\0';

Так что, если mystring было

"asdfjk234klsjadflnwer023jokmnasdf</tag>alskjdflk23<tag2>akjsldfjsdf</tag2>blabla"

, этот код вернул бы

"asdfjk234klsjadflnwer023jokmnasdf"

Мне интересно, может ли это бытьсделано проще?Я знаю, что могу увеличивать счетчик для каждого символа в mystring, пока не найду «<», а затем использовать это int в качестве индекса, но это кажется столь же проблематичным.Все остальные встроенные строковые библиотеки не кажутся полезными, но я уверен, что просто смотрю на это неправильно.Я не использовал C в течение многих лет. </p>

Любая помощь приветствуется!

Ответы [ 4 ]

5 голосов
/ 05 мая 2011

Конечно. Это идиоматический способ сделать это:

char *end;
end = strchr(mystring, '<');
if (end)
    *end = '\0';
2 голосов
/ 05 мая 2011

Как насчет *end = '\0';, а не mystring[strlen... части?

1 голос
/ 05 мая 2011

strchr () возвращает указатель на символ (если найден), поэтому:

if(end)
    *end = '\0';
1 голос
/ 05 мая 2011
char *end;
end = strchr(mystring, '<');
if (end != NULL)
    *end = '\0';
...