Ответ 1
Вы можете просто повторно вызвать substr
, чтобы найти вхождения вашей граничной строки и разделить по результатам. После того как вы нашли результат, переместите указатель по длине подстроки и повторите поиск.
Есть ли способ в C разбить строку (используя strtok
или любым другим способом), где разделитель имеет длину более одного символа? Я ищу что-то вроде этого:
char a[14] = "Hello,World!";
char *b[2];
b[0] = strtok(a, ", ");
b[1] = strtok(NULL, ", ");
Я хочу, чтобы это не разделило строку, потому что между запятой и W нет пробела. Есть ли способ сделать это?
Вы можете просто повторно вызвать substr
, чтобы найти вхождения вашей граничной строки и разделить по результатам. После того как вы нашли результат, переместите указатель по длине подстроки и повторите поиск.
Вы можете использовать char * strstr(const char *haystack, const char *needle)
, чтобы найти строку разделителя в своей строке.
char a[14] = "Hello,World!";
char b[2] = ", ";
char *start = a;
char *delim;
do {
delim = strstr(start, b);
// string between start and delim (or end of string if delim is NULL).
start = delim + 2; // Use lengthof your b string.
} while (delim);
Что-то вроде этого, может быть? Нет гарантий, что это компилируется.;)
char* strstrtok(char *haystack, char *needle) {
static char *remaining = null;
char *working;
if(haystack)
working = haystack;
else if(remaining)
working = remaining;
else
return NULL;
char *result = working;
if(result = strstr(working, needle))
remaining = working + strlen(needle) + 1;
return result;
}