Сравнение строковых массивов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Задача такая Написать функцию, печатающую строку-вопрос (ее аргумент), принимающую с клавиатуры только ответ “YES” или “NO” и возвращающую 1 –при ответе “Yes” и 0 -при “No” Когда ввожу Yes всё считает правильно и выводит 1, НО вот когда ввожу No программа неработает strcmp выдает 1 вместо 0 и флаг k почему то принимает значение 33 хотя я его вообще нигде не меняю. Помогите пожалуйста разобраться. скрин неверного решения прилагается.
Листинг программы
  1. #include<stdio.h>
  2. #include<locale.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. int otvet();
  6. int main(const char s[], const char z[])
  7. {
  8. setlocale(0,"");
  9. char a[]="YES", b[]="NO";
  10. printf("Введите %s или %s\n", a, b);
  11. otvet(a, b)?printf("1"):printf("0");
  12. return 0;
  13. }
  14. int otvet(const char s[], const char z[])
  15. {
  16. int i=1, k=1;
  17. char l[4];
  18. while(k)
  19. {
  20. for (i=0;i<3;i++)
  21. {
  22. l[i]=toupper(getchar()); //perevod v verxniy registr
  23. if(l[i]=='\n') break;
  24. }
  25. k=!strcmp(l,s)||!strcmp(l,z)?0:printf("Неверный ответ! Введите заново! \n");
  26. printf("k=%d\n",k);
  27. printf("strcmp(l,s)=%d, strcmp(l,z)=%d",strcmp(l,s),strcmp(l,z));
  28. }
  29. printf("\n%s\n",l);
  30.  
  31. return (!strcmp(l,s)?1:0);
  32. }

Решение задачи: «Сравнение строковых массивов»

textual
Листинг программы
  1. l[i] = 0;

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы