Форум программистов, компьютерный форум CyberForum.ru

Не работает элементарное сравнение [работа со строками] - C++

Восстановить пароль Регистрация
 
mar112
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 8
13.10.2011, 22:03     Не работает элементарное сравнение [работа со строками] #1
Привет всем, подскажите, пожалуйста, что не так с этим кодом, пытаюсь просто сравнить введённую строку с эл-тами массива char и, в случае их совпадения, записать индекс массива в переменную result :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
 
    char *unit1[19] = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
        "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    char *estring[20];
 
    int i, j, result;
 
    printf("Enter string: ");
    scanf( "%s", estring );
 
        for ( i=0; unit1[i] != '\0'; i++ ) {
 
            if ( estring == unit1[i] ) {
                                result = i;
                        }
        }
 
        printf( "%d", result);
 
 
getch();
 
return 0;
 
}
В результате чего переменная result так и остаётся равна 0.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 22:03     Не работает элементарное сравнение [работа со строками]
Посмотрите здесь:

C++ Работа со строками. Програма работает, но не совсем так.
C++ С++ «Работа со строками»
Не работает программа со строками :((( C++
Работа со строками в С++ C++
C++ Работа со строками C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Чистый
Автор FAQ
 Аватар для Чистый
2572 / 1379 / 70
Регистрация: 08.09.2011
Сообщений: 3,705
Записей в блоге: 1
13.10.2011, 22:08     Не работает элементарное сравнение [работа со строками] #2
для сравнения сток исползуйтся функции strcmp и stricmp например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int stroka(void)
{
  char s[80];
 
  printf("Введите строку: ");
  gets(s);
 
  if(strcmp(s, "Win")) {
    printf("Не верное слово:)\n");
    return 0;
  }
  return 1;
}
Байт
 Аватар для Байт
13960 / 8791 / 1223
Регистрация: 24.12.2010
Сообщений: 15,924
13.10.2011, 22:13     Не работает элементарное сравнение [работа со строками] #3
mar112, Ты сравниваешь АДРЕСА (то бишь указатели), и вполне естественно, что у разных переменных они разные.
Вообще, про строки тебе еще раз перечитать было б не вредно. И примерчики посмотреть.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
13.10.2011, 22:14     Не работает элементарное сравнение [работа со строками] #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    char *unit1[19] = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
            "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    char estring[20];
    int i, j, result = -1;
    printf("Enter string: ");
    gets(estring);
    for( i = 0; i < 19; i++ ) 
        if (! strcmp(estring, unit1[i]))
            result = i;
   
   printf( "%d\n", result);
   system("pause") ;
   return 0;
}
mar112
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 8
13.10.2011, 22:27  [ТС]     Не работает элементарное сравнение [работа со строками] #5
Спасибо всем, проблема решена, strcmp, кстати, пробовал использовать и что-то не получалось, потом забыл про неё .
Yandex
Объявления
13.10.2011, 22:27     Не работает элементарное сравнение [работа со строками]
Ответ Создать тему
Опции темы

Текущее время: 15:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru