Как два раза подряд использовать strchr в языке С
Нужно что бы функция strchr удалила дважды все символы перед запятой тоесть что бы остался фрагмент ,lok,dim . В моем случае, остается только ,dipric,lok,dim . Я понимаю, что функция strchr работает только из const char , но не могу понять как свое понимание реализовать в коде.
#include <stdio.h>
#include <string.h>
int main () {
const char str[] = "gomon,dipric,lok,dim";
const char comma = ',';
char *ret;
ret = strchr(str, comma);
ret = strchr(ret, comma);
printf("%s", ret);
return(0);
}
Ответы (1 шт):
Автор решения: Fat-Zer
→ Ссылка
При втором вызове strchr надо начинать поиск с первого символа в строке т.к. если начать поиск с нулевого, то он будет запятой и будет возвращён, так что нужно просто добавить единичку:
ret = strchr(str, comma);
assert(ret);
ret = strchr(ret+1, comma);
Также на практике стоит добавлять проверку после первого поиска или хотя бы assert.