Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 10:29   #1
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию Сравнение строк в СИ

Какой алгоритм сравнения введенной строки со строкой-константой в программе?
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Старый 14.11.2011, 10:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

строк каких?
p51x вне форума Ответить с цитированием
Старый 14.11.2011, 10:52   #3
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

Ну как-то вот таких:
char string="Какая-то строка"

Я знаю, что есть такие функции strcmp и stricmp, но не могу разобраться, как их использовать. Если сравнивать две const char *string, то все работает, а вот сравнить одну const char *string с введенной строкой не получается - копмилятор говорит, что я дурак.
Повторенье - мать ученья. И прибежище для лентяев.

Последний раз редактировалось Artem_Kokos; 14.11.2011 в 10:56.
Artem_Kokos вне форума Ответить с цитированием
Старый 14.11.2011, 11:59   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

приводите код, где он так говорит, посмотрим
p51x вне форума Ответить с цитированием
Старый 14.11.2011, 18:05   #5
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

int main(){
int T;
char string;
const char *true_string="true string";
printf("Enter the string: ");
scanf("%s", &string);
T = stricmp(string, true_string);
if (T==0) printf("\nIts true\n");
else printf("\nwrong\n");
getch();
}

Как только я просто попытался разобраться, как работают функции сравнения, наткнулся на то, что вот такая программа компилируется, но когда я ввожу любую строку, происходит ошибка. Читал сайты, где приводятся типичные ошибки, которые делают в работе со строками, но так и не нашел объяснения...
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Старый 14.11.2011, 18:11   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

ты пытаешься сравнить строку с символом. который притом вводится как строка.

вот так правильно:

const char* zzz = "...";

char str[100];
fgets(str, sizeof(str)/sizeof(str[0])-1, stdin);

strcmp(zzz, str);
Rififi вне форума Ответить с цитированием
Старый 14.11.2011, 18:46   #7
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

Спасибо) Я и впрямь дурак... Еще такой вопрос появился: методом испробывания алгоритма, я обнаружил, что в строке, где задается константа в моем случае необходимо в конце дописывать "\n". Иначе T = -1. Это всегда так, или зависит от компилятора?
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение строк в Си alekt0 Общие вопросы C/C++ 0 23.09.2011 23:42
Сравнение строк Dasharnb777 Общие вопросы .NET 5 22.09.2010 20:46
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
сравнение строк -? Evgenii Общие вопросы Delphi 10 15.07.2009 15:28
Сравнение строк HOMER Общие вопросы Delphi 7 04.01.2008 05:53