преобразовать строку в ASCII c ++ - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь заставить программу прочитать 2 строки, затем преобразовать их в значение ASCII и сравнить значение 2.

Я не уверен, как изменить строку на значение ASCII, чтобы сработала функция сравнения.

#include <iostream>


int main()
{

    char ch[50];
    std::cout << "Enter a character: ";
    std::cin.getline(ch, sizeof(ch));
    std::cout << "ASCII Value of " << ch << " is " << int(ch) << std::endl;

    char cha[50];
    std::cout << "Enter a character: ";
    std::cin >> cha;
    std::cout << "ASCII Value of " << cha << " is " << int(cha) << std::endl;

    if (ch[50] == cha[50]) {
        std::cout << "ASCII Value of " << cha << " is " << "equal to " << ch;
        return 0;
    }

    else if (ch > cha) {
        std::cout << ch << " is greater than " << cha << std::endl;
        std::cout << int(ch) - int(cha) << "is the differents between the two " ;
        return 1;
    }
    else

    {
        std::cout << ch << " is less than " << cha;
    }

    system("PAUSE");
}

1 Ответ

0 голосов
/ 11 ноября 2018
char ch[50];
std::cout << "Enter a character: ";
std::cin.getline(ch, sizeof(ch));

char ch[50] - это "массив символов" , иначе известный как "строка"

if (ch[50] == cha[50]) { ... }

Оба ch и ch50 имеют 50 элементов. Индекс начинается с нуля, это означает, что последний действительный элемент - ch[49]. ch[50] переполнение буфера и вызывает неопределенное поведение.

Вместо этого вы хотите объявить один символ char ch; и прочитать его. Или объявите ch[50], прочитайте строку и выполните сравнение для ch[0] (это первый элемент в индексе)

int main()
{
    char ch;
    char cha;

    std::cout << "Enter one character: ";
    std::cin >> ch;
    std::cout << "ASCII Value of " << ch << " is " << int(ch) << std::endl;

    std::cout << "Enter a character: ";
    std::cin >> cha;
    std::cout << "ASCII Value of " << cha << " is " << int(cha) << std::endl;

    if(ch == cha) 
    {
        std::cout << "ASCII Value of " << cha << " is " << "equal to " << ch;
    }
    else
    {
        std::cout << ch << " is greater than " << cha << std::endl;
        if(ch > cha)
            std::cout << ch << " is greater than " << cha << std::endl;
        else
            std::cout << ch << " is less than " << cha;
    }

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...