C语言字符串比较:strcmp函数详解

需积分: 9 1 下载量 150 浏览量 更新于2024-08-24 收藏 5.67MB PPT 举报
"比较的结果由函数值带回-谭浩强C语言第三版" 在C语言中,比较字符串的正确方式是通过使用`strcmp`函数,而不是直接使用关系运算符(如>`或`<`). `strcmp`函数是C标准库中的一个函数,它属于`<string.h>`头文件。该函数的主要作用是对比两个字符串的字符序列,返回值能指示这两个字符串之间的关系。 (1) 当字符串1(str1)等于字符串2(str2)时,`strcmp`函数会返回0。这意味着两个字符串的内容完全相同。 (2) 如果字符串1(str1)大于字符串2(str2),即str1在字典顺序上位于str2之后,`strcmp`函数将返回一个正整数。这个正整数的具体数值取决于两个字符串不匹配的第一个字符在ASCII码表上的相对位置。 (3) 反之,如果字符串1(str1)小于字符串2(str2),即str1在字典顺序上位于str2之前,`strcmp`函数会返回一个负整数。同样,这个负整数的绝对值大小与两个字符串不匹配的第一个字符在ASCII码表上的相对位置有关。 使用`strcmp`函数的原因在于,C语言中的字符串是以字符数组的形式存在的,它们在内存中是连续存储的。直接用关系运算符比较字符串会将它们视为指针,比较的是它们在内存中的地址,而不是字符串的内容。因此,正确的做法是使用`strcmp`来确保按字符内容进行比较。 例如,正确的判断两个字符串是否相等的代码应写为: ```c if(strcmp(str1, str2) == 0) printf("yes"); ``` 而错误的写法如: ```c if(str1 > str2) printf("yes"); ``` 这样的错误可能导致程序无法正确判断字符串的大小关系,甚至导致意料之外的行为。 C语言作为一种强大的、高效且灵活的编程语言,自1970年代诞生以来,经历了多次迭代和标准化过程。从最初的B语言演变而来,C语言在贝尔实验室设计并用于编写UNIX操作系统。随着1978年的《The C Programming Language》(通常称为K&R书籍)的出版,C语言开始流行,并逐渐成为跨平台编程的首选语言。1983年,美国国家标准化协会(ANSI)制定了ANSI C标准,随后ISO在1990年采纳为ISO C标准,进一步推动了C语言的普及和规范化。至今,许多C语言编译器都是基于ANSI C标准进行开发,尽管不同编译器可能存在细微差别,但基本语法和功能保持一致。学习C语言时,理解这些历史背景以及所使用的编译器遵循的标准至关重要。