Я новичок в C, учусь в университете.В одной из заданий, которые мне дали, я имею дело со строками.Я беру строки, введенные пользователем или анализируемые из файла, а затем использую для них функцию для получения ответа (если существует определенное качество).
Строка может иметь переменную длину, но допустимо предположить, чточто их максимальная длина составляет 80 символов.
Я создал программу, используя
char s[81];
, а затем каждый раз заполнял один и тот же массив разными строками.Поскольку строка должна заканчиваться нулем, я просто добавил '\ 0' с индексом 80;
s[80] = '\0';
Но затем я получил все виды странного поведения - несвязанные символы в конце введенной строки,Я предположил, что это потому, что между концом «настоящих» символов и символом «\ 0», заполненным мусором (?), Было пространство.
Итак, я создал функцию:
void clean_string(char s[], int string_size) {
int index = 0;
while(index < string_size) {
s[index++] = '\0';
}
}
То, что я называю чистым, это просто заполнение строки нулевыми символами.Я делаю это каждый раз, когда заканчиваю работу со строкой и готов принять новую.Затем я снова заполняю строку символ за символом, и когда я остановлюсь, следующий символ наверняка будет \ 0.Чтобы не включать магические числа в код (81 каждый раз, когда я вызываю clean_string), я использовал следующее:
#define STRING_LENGTH 81
Это работает для меня.Строки не показывают странного поведения.Но я задавался вопросом, считается ли это плохой практикой.Есть ли проблемы с этим подходом?Просто подчеркиваю, я не прошу помощи в самом задании, но советы о том, как лучше подходить к таким ситуациям.