Сравнение строковых массивов - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д