Не хочет сравнивать символьные строки. Где ошибка?
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Всем добрый день! В очередной раз обращаюсь за помощью..
Нужно написать программу, которая будет принимать ввод двух строк некоторого текста и посимвольно сравнивать их, выдавая на экран результат сравнения.
Вот мой код:
Программ при компиляции выдает ошибку в этом месте if (strnicmp(s1, s2) > 0) объясняя ее этим: «Слишком мало аргументов в вызове функции»
Если записать код через if (strcmp(s1, s2) > 0) то сравнение будет работать, но до того момента, как я начну сравнивать цифры с буквами, или текст без пробелов с текстом с пробелами. Иначе говоря сравнение строк, а не кол-ва их символов.
Тут и вопрос, каких аргументов ему не хватает?
strcmp как раз выполняет сравнение строк.
Не хватает количество сравниваемых символов. Суффикс n указывает на это.
А вообще, функция нестандартная, поэтому лучше ей вообще не пользоваться.
имхо, тогда уж
function strncmp
Ничего не понял... Я использую strnicmp для сравнения кол-ва символов без учета регистра.. Вот именно ей и не хватает аргументов, тоже не понимаю каких..
strcmp работает на половину, но мне оно не нужно для условия задачи. Я написал про нее лишь с целью узнать для себя ответ, в жизни пригодиться..
Не хватает количества сравниваемых символов. (суффикс n в имени функции)
То есть вызов нужно писать так:
А в вашем случае:
porshe, такой момент.. Вижуал поругал меня за надпись strnicmp и предложил записать ее как _strnicmp. Я записал и программ вроде заработал. Сравнивает и цифры с цифрами, и буквы с цифрами, и буквы с буквами.. Но.. С пробелами какой-то косяк. Сравнивая a(пробел)sd и 12345 выдает, что первая строка больше..
strcmp
,strncmp
,strnicmp
и прочее выдаёт разность первых отличающихся символов строки №1 и строки №2. В данном случае дело даже не в пробеле (строго говоря, пробел ничем не отличается от остальных символов). Первые отличающиеся символы: a и 1, поэтому_strnicmp
вернётstatic_cast<int>("a" - "1")
, что больше 0.Тогда как сравнить две строки символов?? Оо
mychernenko, если тебе нужно сравнить в какой из строк находится больше символов, то можно поступить так
beginner, благодарю тебя добрый человек! Все работает идеально! Одного я чутка не понимаю, что такое char *? Уж простите за такой тупой вопрос(((
beginner, на тему
есть стандартная функция
strlen()
. Т.е. твоя программа сводится кmychernenko,
char *
— это указатель наchar
. Читай Указатели в C++ — урок 7.Упс... И убрать на фиг строчку!!!