Сравнение строковых массивов - 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;

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


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

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

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