Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как сравнить одно слово с другим?


Автор: gutmann 7.3.2005, 11:55
Здравствуйте! Я новичок(говорит о многом smile ). Делаю консольную прогу в Microsoft Visual C++6
Стал он у меня по-странному, так что хэлп плохо пашет.
Я хочу чтоб пользователь вводил слово и проводилась проверка этого слова с тем словом, которое записано в проге. Вот мой код. В нем 100% есть ошибки. Если вас не утрудит.... Вроде задачка легкая, но вот синтаксис итд... Не знаю нужно ли брать в кавычки слово apple. Может есть другой способ, потому что здесь ничего не пахает. Благодарю.

// probbba.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include "conio.h"


void main()
{

cout << "Enter the word apple\n";


char d[6] = "";


cin >> d;
cout << "\n";

if (d == "apple"){ // Здесь я хочу выполнить проверку введенного слова
cout << "Correct"; // со словом apple.
}

}

Автор: gepard 7.3.2005, 12:15
Пишешь функцию, в которую передаётся указатель на массив char'ов:
Код

bool function(char* chr)

В ней нужно сравнивать каждый элемент двух массивов: первый массив - твоё слово, второй - по переданому указателю

Автор: Ni@m 7.3.2005, 12:16
Если тебе нужно полное сравнение, то :
Код

#include "iostream.h"
#include "string.h"


void main()
{

cout << "Enter the word apple\n";


char d[6] = "";


cin >> d;
cout << "\n";

if (strstr(d,"apple") != NULL && strlen("apple") == strlen(d))
{ // Здесь я хочу выполнить проверку введенного слова
cout << "Correct"; // со словом apple.
}


Добавлено @ 12:18
gepardМожно и так, но функции из стандартной библиотеки точно будут шустрее.

Автор: GRON 7.3.2005, 12:19
d - это указатель на начало массива, и сравнивать его со строкой нельзя. Кроме того, что сказал gepard,
можно юзнуть функции strcmp(char*,char*) - сравнение с учетом регистра букв, и stricmp(char*, char*) - без учета регистра.

Автор: __Sergey__ 8.3.2005, 04:10
А ф-ции lstrcmp и lstrcmpi корректно работают с юникодом и не с ним.

Автор: bel_nikita 8.3.2005, 16:31
memcmp
Код

#include <iostream.h>
#include <string.h>

void main()
{
 cout << "Enter the word apple\n";
 char d[6] = "";
 cin >> d;
 cout << "\n";
 
 // выполняем проверку введенного слова
 if ( !memcmp( d,"apple",strlen("apple") ) )
 {
   cout << "Correct"; // слово apple.
 }

Автор: Goryachev 9.3.2005, 20:46
А я думаю, что обычный strcmp сработает.
Код

#include <iostream.h>
#include <string.h>

void main()
{
 cout << "Enter the word apple\n";
 char d[6] = "";
 cin >> d;
 cout << "\n";
 
 // выполняем проверку введенного слова
 if ( !strcmp(d,"apple" ) )
 {
   cout << "Correct"; // слово apple.
 }

Автор: pablo 10.3.2005, 11:14
А зачет пользоваться масивами на char если есть string.

Код

#include <iostream>
#include <string>

using std::cin;
using std::string;

int main()
{
    string a = "apple", b;
    cin >> b;
    if(b == a)
    {
         какието действия если строки равны
  
    }
    else
    {
          дейсвия если стоки не равны
    }
    return 0;
}


На мой взгляд проще некуда.

Автор: MiltonNon 12.9.2021, 00:31
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)