Игнорируется проверка строк в коде - 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;}

Объяснение кода листинга программы

В данном коде выполняется проверка каждого символа строки на допустимость. Если символ является недопустимым, то выводится сообщение об ошибке, содержащее информацию о самом символе, его позиции в строке и номере строки. После вывода сообщения выполняется переход к следующей итерации цикла. Если все символы строки являются допустимыми, то код не выводит никаких сообщений. Вот список действий, выполняемых в данном коде:

  1. Переменная i инициализируется значением 0.
  2. Выполняется проверка условия i<LenMax. Если условие истинно, то выполняется следующий блок кода, иначе цикл завершается.
  3. Переменная str используется как указатель на текущий символ строки.
  4. Выполняется проверка условия *(str+i)==95 || (*(str+i)>=(-128) && *(str+i)<(-96)). Если условие истинно, то выполняется следующий блок кода, иначе выполняется блок кода, находящийся после оператора else.
  5. Если текущий символ является недопустимым, то выводится сообщение об ошибке, содержащее информацию о самом символе, его позиции в строке и номере строки. После вывода сообщения выполняется переход к следующей итерации цикла с помощью оператора break.
  6. Если текущий символ является допустимым, то код не выводит никаких сообщений.
  7. Условие i<LenMax снова проверяется. Если условие истинно, то выполняется следующий блок кода, иначе цикл завершается.
  8. Указатель str инкрементируется на 1, чтобы перейти к следующему символу строки.
  9. Цикл повторяется с шага 3 до тех пор, пока условие i<LenMax остается истинным.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы