Игнорируется проверка строк в коде - C (СИ)
Формулировка задачи:
Задание: Нужно ввести текст(допускаются большие русские буквы и знак "_"). В этом куске кода вводится текст и должны проверятся условия, но просто игнорируется проверка, не могу найти ошибку, помогите разобраться.
char *str; int i,LenMax; printf("Введите максимальную длину: "); scanf(" %i",&LenMax); str=(char *)malloc(LenMax*sizeof(char)); printf("Введите текст: "); scanf("%s",str); for(i=0;i<LenMax;i++) if (int(*(str+i))!=95 && int(*(str+i))<128 && int(*(str+i))>159) printf("Введеный символ не допустим '%c', позиция %i",str+i,i+1); else printf("Все верно"); free(str);
Решение задачи: «Игнорируется проверка строк в коде»
textual
Листинг программы
for(i=0;i<LenMax;i++) if (*(str+i)==95 || (*(str+i)>=(-128) && *(str+i)<(-96))) printf(""); else {printf("Введенный символ не допустим '%c', позиция %i\n",*(str+i),int(*(str+i)),i+1);break;}
Объяснение кода листинга программы
В данном коде выполняется проверка каждого символа строки на допустимость. Если символ является недопустимым, то выводится сообщение об ошибке, содержащее информацию о самом символе, его позиции в строке и номере строки. После вывода сообщения выполняется переход к следующей итерации цикла. Если все символы строки являются допустимыми, то код не выводит никаких сообщений. Вот список действий, выполняемых в данном коде:
- Переменная
i
инициализируется значением 0. - Выполняется проверка условия
i<LenMax
. Если условие истинно, то выполняется следующий блок кода, иначе цикл завершается. - Переменная
str
используется как указатель на текущий символ строки. - Выполняется проверка условия
*(str+i)==95 || (*(str+i)>=(-128) && *(str+i)<(-96))
. Если условие истинно, то выполняется следующий блок кода, иначе выполняется блок кода, находящийся после оператораelse
. - Если текущий символ является недопустимым, то выводится сообщение об ошибке, содержащее информацию о самом символе, его позиции в строке и номере строки. После вывода сообщения выполняется переход к следующей итерации цикла с помощью оператора
break
. - Если текущий символ является допустимым, то код не выводит никаких сообщений.
- Условие
i<LenMax
снова проверяется. Если условие истинно, то выполняется следующий блок кода, иначе цикл завершается. - Указатель
str
инкрементируется на 1, чтобы перейти к следующему символу строки. - Цикл повторяется с шага 3 до тех пор, пока условие
i<LenMax
остается истинным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д