#include #include #include #include int main(int argc, char ** argv) { if (argc != 3) { fprintf(stderr, "Usage: %s sentence init\n", argv[0]); return 1; } const char * sentence = argv[1]; size_t init = strtoul(argv[2], NULL, 10); int count = 0; int toreach = -1; size_t len = strlen(sentence); if (init > len || sentence[init] != '(') { fprintf(stderr, "No opening parenthesis at index %zu\n", init); return 1; } for (size_t i = 0; i < len; ++i) { if (sentence[i] != '(' && sentence[i] != ')') continue; if (i == init) toreach = count; if (sentence[i] == '(') ++count; else if (sentence[i] == ')') --count; if (toreach == count) { printf("%s\n%*c %zu\n", sentence, (int)i+1, '\\', i); break; } } if (toreach != count) { fprintf(stderr, "No matching parenthesis found\n"); return 1; } return 0; }