C/C++ strcmp 无法将参数 1 从 'char' 转换为 'const char *'
C/C++ strcmp cannot convert argument 1 from 'char' to 'const char *'
所以我正在传递一个包含几个单词的 char Array(En) 并且我正在尝试按字母顺序排序。不幸的是,我的编译器出现“int strcmp(const char *,const char *)”:无法将参数 1 从 'char' 转换为“const char *”,我有点卡住了!
void TDihotTable::Set(char *En){
int i, j;
bool sorted = false;
char* pTemp = NULL;
while (!sorted)
{
sorted = true;
for (size_t i = 0; i < 6 - 1; ++i)
{
if (!strcmp(En[i], En[i + 1]) > 0)
{
sorted = false;
pTemp = En[i];
En[i] = En[i + 1];
En[i + 1] = pTemp;
}
}
}
}
strcmp()
期望其参数为 const char *
,但在您的代码中,En[i]
和 En[i+1]
的类型为 char
.
- 如果要压缩
char
s,请使用 ==
运算符。
- 如果你想比较字符串,使用
&En[i]
和&En[i+1]
传递地址
也就是说,
if (!strcmp(En[i], En[i + 1]) > 0)
错了。请验证你的逻辑。
使用En[i] != En[i + 1]
比较字符。 strcmp
采用 char *
个参数,但 En[i]
和 En[i + 1]
是 char
。
strcmp()
需要字符串作为比较参数,而不是字符。所以,而不是这一行:
if (!strcmp(En[i], En[i + 1]) > 0)
您可以根据需要直接将两个字符比较为 if(En[i]==En[i+1])
或 if(En[i]!=En[i+1])
。
单词数组应该是一个二维字符数组:char **En
。比较应该工作。
您的函数应该更像:
void TDihotTable::Set(char **En){
^^
那将是一个指向字符串的指针数组,您可以像在
中那样对其进行 strcmp
if (!strcmp(En[i], En[i + 1]) > 0)
^
这也是错误的。
使用
if (strcmp(En[i], En[i + 1]) > 0)
目前您尝试比较单个字符。
所以我正在传递一个包含几个单词的 char Array(En) 并且我正在尝试按字母顺序排序。不幸的是,我的编译器出现“int strcmp(const char *,const char *)”:无法将参数 1 从 'char' 转换为“const char *”,我有点卡住了!
void TDihotTable::Set(char *En){
int i, j;
bool sorted = false;
char* pTemp = NULL;
while (!sorted)
{
sorted = true;
for (size_t i = 0; i < 6 - 1; ++i)
{
if (!strcmp(En[i], En[i + 1]) > 0)
{
sorted = false;
pTemp = En[i];
En[i] = En[i + 1];
En[i + 1] = pTemp;
}
}
}
}
strcmp()
期望其参数为 const char *
,但在您的代码中,En[i]
和 En[i+1]
的类型为 char
.
- 如果要压缩
char
s,请使用==
运算符。 - 如果你想比较字符串,使用
&En[i]
和&En[i+1]
传递地址
也就是说,
if (!strcmp(En[i], En[i + 1]) > 0)
错了。请验证你的逻辑。
使用En[i] != En[i + 1]
比较字符。 strcmp
采用 char *
个参数,但 En[i]
和 En[i + 1]
是 char
。
strcmp()
需要字符串作为比较参数,而不是字符。所以,而不是这一行:
if (!strcmp(En[i], En[i + 1]) > 0)
您可以根据需要直接将两个字符比较为 if(En[i]==En[i+1])
或 if(En[i]!=En[i+1])
。
单词数组应该是一个二维字符数组:char **En
。比较应该工作。
您的函数应该更像:
void TDihotTable::Set(char **En){
^^
那将是一个指向字符串的指针数组,您可以像在
中那样对其进行 strcmp if (!strcmp(En[i], En[i + 1]) > 0)
^
这也是错误的。 使用
if (strcmp(En[i], En[i + 1]) > 0)
目前您尝试比较单个字符。