Как предотвратить ввода пустоты в строку
Хочу сделать так, чтобы пользователь не мог ввести пустую строку в мой массив s(т.е. просто нажать enter), но не понимаю, как это реализовать. Пробовал сравнивать содержимое массива с нуль терминатором и вообще с пустотой(""), но ничего не выходит.
int main() {
char s[SIZE];
puts("Введите строку:");
fgets(s, SIZE, stdin);
if (s[SIZE] = "") {
printf("Перезапустите программу и введите строку символов!");
return 1;
} /*Предотвращение ввода пустой строки*/
int n;
Ответы (1 шт):
Во первых вы не сравниваете, а пытаетесь присвоить. И пытаетесь присвоить элементу за пределами массива!
if (s[SIZE] = "") // присвоение !!!
Во-вторых, чтобы строки сравнивались по содержимому используют strcmp(). Сравнивая 'if("" == "")' в общем случае вы получите отрицательный результат, т.к. сравниваются указатели на строки, а строки - разные.
if ( strcmp( s, "") == 0 )
Второй вариант. Как понять размер строки? - строка ограничивается нулём. Что такое пустая строка? Это значит ноль стоит на первом месте. Т.е. проверьте первый символ строки на ноль.
if ( s[0] == 0 )
Иногда при вводе пустой строки с клавиатуры она на самом деле может состоять из 2 символов - "\n\0" Проверьте дебаггером. Тогда надо будет
if ( s[0] == '\n' and s[1] == 0 )