Меня очень беспокоят строки в C. Нужно ли мне устанавливать последний символ \ 0 или он делает это сам? Если я не делаю этого вручную, то когда я пытаюсь отладить код и когда я обращаюсь к string1 [257], он не равен нулю. У меня проблемы с освобождением выделенной памяти для массива строк, поэтому я подумал, что это причина.
char string1[257], string2[257];
scanf("%s", &string2);
string1[257] = '\0';
strncpy(string1, string2, 257);
string1[257] = '\0'; /* do I need to do that? */