C/C++ strcmp 无法将参数 1 从 'char' 转换为 'const char *'
C/C++ strcmp cannot convert argument 1 from 'char' to 'const char *'
所以我通过了一个字符阵列(en),该数组(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;
}
}
}
}
您的功能应该更像:
void TDihotTable::Set(char **En){
^^
那将是一系列要串的指针,您可以像在
中一样strcmp if (!strcmp(En[i], En[i + 1]) > 0)
^
在商标上如此越野车。使用
if (strcmp(En[i], En[i + 1]) > 0)
目前尝试比较单个字符。
strcmp()
期望它的参数为 const char *
,但在您的代码中, En[i]
和 En[i+1]
是类型char
。
- 如果您想comapre
char
s,请使用==
操作员。 - 如果要比较 strings ,请使用
&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
。然后比较应该起作用。
相关文章:
- 将无符号char*转换为std::istream*C++
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将函数参数"const char*"转换为"std::string_view"是
- C ++如何在使用"tolower"时将char转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 如何在虚幻引擎4中将char*转换为TCHAR?
- C++:将模板类型 char 转换为 std::string
- strcmp/char* 转换无法按预期工作
- C++中的SQLite char*转换
- 无法从 const char* 转换为 const char *&
- 在 C++ 中将 char 转换为 int,而无需符号位传播
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 试图使用strCMP时的char转换错误
- 无法从'const char *'转换为'LPCTSTR'
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 使用 static_cast 将 char 转换为 int c++
- 如何在 C++(MFC) 中将 char* 转换为 LPCTSTR
- 无法将const char转换为字符串构造字符串