c - перезаписывающий символ перехода на новую строку с нулевым терминатором вызывает segfault

Так что у меня есть строка с несколькими escape-последовательностями новой строки. Я хотел бы вырезать строку до первых n строк, как в программе head из coreutils. Например, скажем, у меня есть строка "a\nb\nc\n", я бы хотел, чтобы первая строка была такой, чтобы моя выходная строка была "a". В других случаях, когда мне нужно было обрезать строку, я просто помещал нулевой терминатор в положение, где я хотел, чтобы строка заканчивалась. Однако когда я запускаю что-то вроде этого:

void main() {
    char *str = "a\nb\nc\n";
    str[1] = '\0';
}

Я получаю сегфо Я действительно не понимаю, почему. Что я могу сделать, чтобы это исправить?

0 ответов

Другие вопросы по тегам