Указатель Strcmp из целого числа без приведения - PullRequest
1 голос
/ 09 мая 2011

Я пытаюсь сравнить два символа и посмотреть, какой из них более лексикографический, и проблема с сортировкой заключается в том, что я не уверен, как сравнить один символ, который я пытался сделать с помощью strcmp, например

struct example
{
 char code;
}
if (strcmp(i->code, j->code) < 0)
    return 1;

предупреждение: передача аргумента 1 из âstrcmpâ делает указатель из целого числа без приведения

предупреждение: передача аргумента 2 из âstrcmpâ делает указатель из целого числа без приведения

Я знаю, что strcmp для строк, я должен просто malloc и вместо этого преобразовать код символа в строку, или есть другой способ сравнения отдельных символов?

Ответы [ 4 ]

3 голосов
/ 09 мая 2011

strcmp() принимает строку с нулевым символом в конце , поэтому в C a char *.Вы передаете ему один символ, char.Этот символ автоматически повышается до int в выражении (это всегда происходит с char в выражениях на C), а затем этот int пытается изменить на char*.Слава богу, что это не удается.

Используйте это вместо:

if (i->code < j->code)
3 голосов
/ 09 мая 2011

char - это целочисленный тип.

Вы сравниваете char объекты, используя операторы отношения и равенства (<, == и т. Д.).

2 голосов
/ 09 мая 2011

Поскольку вы сравниваете символы, а не строки с нулевым символом в конце, выполните следующие действия:

if (i->code < j->code)
0 голосов
/ 09 мая 2011

Попробуйте

if (i->code < j->code)
    ...
...