Сравнение строковых массивов - C (СИ)
Формулировка задачи:
Здравствуйте! Задача такая
Написать функцию, печатающую строку-вопрос (ее аргумент), принимающую с клавиатуры только ответ “YES” или “NO” и возвращающую 1 –при ответе “Yes” и 0 -при “No”
Когда ввожу Yes всё считает правильно и выводит 1, НО вот когда ввожу No программа неработает strcmp выдает 1 вместо 0 и флаг k почему то принимает значение 33 хотя я его вообще нигде не меняю.
Помогите пожалуйста разобраться. скрин неверного решения прилагается.
Листинг программы
- #include<stdio.h>
- #include<locale.h>
- #include<stdlib.h>
- #include<string.h>
- int otvet();
- int main(const char s[], const char z[])
- {
- setlocale(0,"");
- char a[]="YES", b[]="NO";
- printf("Введите %s или %s\n", a, b);
- otvet(a, b)?printf("1"):printf("0");
- return 0;
- }
- int otvet(const char s[], const char z[])
- {
- int i=1, k=1;
- char l[4];
- while(k)
- {
- for (i=0;i<3;i++)
- {
- l[i]=toupper(getchar()); //perevod v verxniy registr
- if(l[i]=='\n') break;
- }
- k=!strcmp(l,s)||!strcmp(l,z)?0:printf("Неверный ответ! Введите заново! \n");
- printf("k=%d\n",k);
- printf("strcmp(l,s)=%d, strcmp(l,z)=%d",strcmp(l,s),strcmp(l,z));
- }
- printf("\n%s\n",l);
- return (!strcmp(l,s)?1:0);
- }
Решение задачи: «Сравнение строковых массивов»
textual
Листинг программы
- l[i] = 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д