探讨C语言中strlen、strcpy与strcmp函数的用法与区别

需积分: 0 2 下载量 7 浏览量 更新于2024-08-04 收藏 19KB DOCX 举报
本文主要介绍了C语言中与字符串处理相关的头文件`string.h`中的几个重要函数:strlen、strcpy和strcmp。这些函数在STM32或任何其他嵌入式开发以及通用编程中都有广泛的应用。 1. strlen函数: - 函数原型:strlen(char* 字符数组名) - 功能:计算字符串(不包括终止符'\0')的长度,返回一个unsigned int类型的值。 - 说明:strlen函数用于确定字符串的实际长度,不会将空字符计为长度。当未初始化数组时,strlen会从指定地址开始搜索直到找到'\0'为止,导致结果不确定。例如: - char aa[10]; strlen(aa):结果可能不同 - char aa[10]={'\0'}; strlen(aa):结果为0 - char aa[10]="jun"; strlen(aa):结果为3 - sizeof()函数则返回变量在内存中占用的字节数,而不是实际字符串长度,且它是运算符而非函数。 2. strcpy函数: - 函数原型:char* strcpy(char* 目标地址, char* 源地址) - 功能:将源字符串完全复制到目标字符串中,包括终止符'\0'。 - 例子: ```c #include<stdio.h> #include<string.h> int main() { char string[10]; char* str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n", string); return 0; } ``` - 注意:复制过程中如果目标字符串不足,可能会导致缓冲区溢出,因此在实际使用时需要确保目标足够大。 3. strcmp函数: - 函数原型:int strcmp(char* str1, char* str2) - 功能:比较两个字符串,返回值表示它们的相对顺序: - 如果str1 > str2,返回值 > 0 - 如果str1 == str2,返回值 = 0 - 如果str1 < str2,返回值 < 0 - 示例: ```c #include<stdio.h> #include<string.h> int main() { char* buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer2 is greater than buffer1\n"); else if (ptr < 0) printf("buffer2 is less than buffer1\n"); ptr = strcmp(buf2, buf3); // 类似于上面的条件判断,根据返回值输出字符串之间的关系 } ``` 总结,`string.h`中的strlen、strcpy和strcmp函数是C语言处理字符串的基本工具,理解和掌握它们的用法对于编写高效、稳定的程序至关重要,尤其是在嵌入式系统如STM32开发中,正确处理字符串操作可以避免常见的错误和性能问题。