c - перезаписывающий символ перехода на новую строку с нулевым терминатором вызывает segfault
Так что у меня есть строка с несколькими escape-последовательностями новой строки. Я хотел бы вырезать строку до первых n строк, как в программе head из coreutils. Например, скажем, у меня есть строка "a\nb\nc\n", я бы хотел, чтобы первая строка была такой, чтобы моя выходная строка была "a". В других случаях, когда мне нужно было обрезать строку, я просто помещал нулевой терминатор в положение, где я хотел, чтобы строка заканчивалась. Однако когда я запускаю что-то вроде этого:
void main() {
char *str = "a\nb\nc\n";
str[1] = '\0';
}
Я получаю сегфо Я действительно не понимаю, почему. Что я могу сделать, чтобы это исправить?