Перезапись нуль терминатора в строковом массиве.(Си)
Применяется ли перезапись нуль терминатора в строковом массиве?
Для экономии памяти или ещё может для чего.
char arr[3];
arr[0]='1';
arr[1]='2';
arr[2]='3';
Здесь я перезаписал нуль терминатор arr[2]='3';
Или это неграмотно и не нужно?
По дате
По рейтингу
По ситуации. Если нужно вывести часть строки - делаешь копию оригинальной и вытворяешь всё, что хочешь. Пример долго искать
Это называется переполнением, которое приводит к неопределённому поведению программы. 0-терминатор – это святое и удалять его из строки никак нельзя. В Майкрософт даже придумали на этот случай потокобезопасные функции с суффиксом _s
и дальше что с этим чудом делаешь?
по факту это уже больше не сишная строка, а просто массив чаров, т. е. во всякие строковые функции это уже не запихнуть