/* cc -o testcase2 testcase2.c && ./testcase2 */ #include #include int main() { char line[] = "pcm4: (play/rec) default"; //char line[] = "pcm4: (Rear Analog 5.1/2.0)> (play/rec) default"; #if 1 int device; if (sscanf(line, "pcm%i: ", &device) != 1) return 0; char *k = strchr(line, ':'); if (!k) return 0; k++; k += strspn(k, " <"); k[strcspn(k, ">")] = 0; printf("Testcase 1:\n"); printf("%d - %s\n", device, k); #else int device; if (sscanf(line, "pcm%i: ", &device) != 1) return 0; char *k = strchr(line, ':'); if (!k) return 0; k++; k += strspn(k, " "); if (k[0] == '<') { const char *e = strrchr(k, '>'); if (e) { const size_t q = strlen(k) - strlen(e); k[q] = 0; ++k; } } printf("Testcase 2:\n"); printf("%d - %s\n", device, k); #endif return 0; }