strcmp比较空字符串与非空字符串
时间: 2023-08-28 09:06:42 浏览: 205
`strcmp` 函数用于比较两个字符串的内容是否相等。当其中一个字符串为空字符串,另一个字符串为非空字符串时,`strcmp` 函数的比较结果取决于非空字符串的第一个字符。
如果非空字符串的第一个字符为 '\0',即空字符,那么 `strcmp` 函数会返回一个负整数,表示空字符串小于非空字符串。
如果非空字符串的第一个字符不是 '\0',那么 `strcmp` 函数会返回一个正整数,表示空字符串大于非空字符串。
下面是一个示例代码,演示了如何使用 `strcmp` 函数比较空字符串与非空字符串:
```cpp
#include <iostream>
#include <cstring>
int main() {
const char* str1 = "";
const char* str2 = "Hello";
int result = strcmp(str1, str2);
if (result < 0) {
std::cout << "Empty string is less than non-empty string." << std::endl;
} else if (result > 0) {
std::cout << "Empty string is greater than non-empty string." << std::endl;
} else {
std::cout << "Both strings are equal." << std::endl;
}
return 0;
}
```
在上述代码中,我们将一个字符串 `str1` 设置为空字符串,另一个字符串 `str2` 设置为 "Hello"。然后使用 `strcmp` 函数比较这两个字符串的内容。由于空字符串小于非空字符串 "Hello",所以 `strcmp` 函数返回一个负整数。因此,程序输出 "Empty string is less than non-empty string."。
需要注意的是,当使用 `strcmp` 函数比较空字符串与非空字符串时,务必确保非空字符串指针不为空指针,否则会导致未定义的行为。