跳至正文
View Categories

1 min read

主要内容 #

这节课,我们继续介绍一些C/C++中内置的一些字符串处函数。

一、int strcmp(const char *s1,const char *s2) #

函数功能:

  • 比较字符串 s1 和 s2 的大小。
  • 如果 s1 大于 s2,返回正数
  • 如果 s1 等于 s2,返回0
  • 如果 s1 小于 s2,返回负数
  • 字符串的比较规则:逐一按照 ASCII 的数值大小比较。

字符串的比较规则举例:

"dashima" 等于 "dashima"; // true
"a"       小于 "b";       // true,从 ASCII 值大小可以得知
"dashima" 大于 "abc";     // true,长度
"abc_a"   小于 "abc_b";   // true,从 ASCII 值大小可以得知
"abc_1"   小于 "abc_9";   // true,从 ASCII 值大小可以得知
"abc_0"   小于 "abc_1";   // true,从 ASCII 值大小可以得知
"a"       小于 "_";       // true,从 ASCII 值大小可以得知
"A"       小于 "a";       // true,从 ASCII 值大小可以得知

详见下面例程:

#include < iostream >
#include < cstring >

using namespace std;

int main()
{
    char dashima1[] = "aaa";
    char dashima2[] = "bbbb";
    
    int result = strcmp(dashima1, dashima2); 
    
    if(result > 0)
        cout << dashima1 << " > " << dashima2 << endl;
    else if(result < 0)
        cout << dashima1 << " < " << dashima2 << endl;
    else
        cout << dashima1 << " = " << dashima2 << endl;

    return 0;
}

输出结果:

aaa < bbbb

请尝试下列各组字符串的比较结果:

"dashima" , "dashima"; 
"a"       , "b"; 
"dashima" , "abc";    
"abc_a"   , "abc_b";
"abc_1"   , "abc_9";   
"abc_0"   , "abc_1"; 
"a"       , "_";  
"A"       , "a";

请注意,字符串,包括数组,都是不可以直接使用 == 等符号进行大小比较的。

请编程,设计一个函数,完成字符串的大小规则比较。

请点击连接,访问大师码 OJ 完成答题。
计时 10 分钟。


请点击连接,查看示例程序。

二、int strncmp(const char *s1,const char *s2, const int n) #

函数功能:

  • 比较字符串 s1 和 s2 的前 n 个字符的大小。
  • 如果 s1 大于 s2,返回正数
  • 如果 s1 等于 s2,返回0
  • 如果 s1 小于 s2,返回负数
  • 字符串的比较规则:先比较长度,按照 ASCII 的数值大小比较。

三、int strlen(const char *s1) #

函数功能:

  • 返回字符串的长度。字符串末尾的 \0 不计入总长度

四、int strlwr(char *s1) #

函数功能:

  • 将 s1 中的大写字母转化成小写字母
  • 调用后,s1 的内容被改变了

五、int strupr(char *s1) #

函数功能:

  • 将 s1 中的小写字母转化成大写字母
  • 调用后,s1 的内容被改变了

习题 #

课后练习