Это практический вопрос из моей школы, это не домашний вопрос:
Учитывая следующее объявление, напишите фрагмент кода C, который может
привести к strlen(arr)
возвращению не менее 8.
char arr[4];
Моя попытка ответить на этот вопрос такова: невозможно, нет способа достичь этого. Поскольку strlen будет возвращать число символов в массиве char до тех пор, пока он не встретит первый \ 0, я не вижу, что в любом случае мы можем позволить strlen вернуть 8 в этом случае. Я думаю, что если мы принудительно назначим для этого массива строку длиной 8, поведение не будет предсказуемым.
Однако, решение, которое дает наш инструктор:
strcpy(arr, Any 8-char-long string);
Например:
strcpy(arr, "Overflow");
Я не понимаю, почему это допустимо, в моем понимании, я не вижу, чтобы в этом массиве было достаточно места для хранения этой строки длиной 8, есть ли что-то, что я упускаю для понимания строки в C?