найти различные подстроки информации из более крупной строки, где информация отделена ":"
Как я мог использовать функцию strstr
в цикле C этой строки для извлечения информации в другую подстроку?
strstr()
не лучший инструмент для этой задачи, но его можно использовать для поиска ":"
.
Вместо этого я бы порекомендовал strcspn(string, "\n")
, поскольку цель состоит в том, чтобы найти следующий ":"
или нулевой символ .
Код OP'c близок к формированию цикла, но также должен обрабатывать последний токен, в котором отсутствует конечный ':'
.
void parse_colon(const char *string) {
while (*string) { // loop until at the end
size_t len;
const char *endptr = strstr(string, ":"); // much like OP's code
if (endptr) {
len = (size_t) (endptr - string); // much like OP's code
endptr++;
} else {
len = strlen(string);
endptr = string + len;
}
char *result = malloc(len + 1);
if (result) {
memcpy(result, string, len);
result[len] = '\0';
puts(result);
free(result);
}
string = endptr;
}
}
int main(void) {
parse_colon("username:id:password:info");
}
выход
username
id
password
info