嵌入式大厂面经 字符串常见函数使用C语言实现方式
这是一个嵌入式大厂面试题专栏,每天更新高频面试题。专栏将包含题目描述、详细解析、相关知识点扩展以及实际代码示例。内容涵盖操作系统、驱动开发、通信协议等核心领域,并结合实际项目经验进行分析。每道题目都会附带面试官可能的追问方向,帮助大家更好地准备面试!
在 C 语言中,字符串是字符数组(char 数组)的形式,且以 \0(空字符)结尾。C 标准库提供了一些常用的字符串函数,帮助我们处理字符串的操作。以下是常见的字符串函数及其 C 语言实现方式。
1. strlen:获取字符串的长度
该函数返回字符串的长度(不包括终止的 \0 字符)。
#include <stdio.h>
size_t my_strlen(const char *str) {
size_t length = 0;
while (str[length] != '\0') {
length++;
}
return length;
}
int main() {
const char *str = "Hello, World!";
printf("Length: %zu\n", my_strlen(str));
return 0;
}
2. strcmp:比较两个字符串
该函数用于逐个比较两个字符串,直到发现不相等的字符或到达字符串的结尾。它返回:
0:如果两个字符串相等。负值:如果第一个字符串小于第二个字符串(字典顺序)。正值:如果第一个字符串大于第二个字符串。
#include <stdio.h>
int my_strcmp(const char *str1, const char *str2) {
while (*str1 && (*str1 == *str2)) {
str1++;
str2++;
}
return *(unsigned char *)str1 - *(unsigned char *)str2;
}
int main() {
const char *str1 = "apple";
const char *str2 = "banana";
int result = my_strcmp(str1, str2);
if (result == 0) {
printf("Strings are equal.\n");
} else if (result < 0) {
printf("str1 is less than str2.\n");
} else {
printf("str1 is greater than str2.\n");
}
return 0;
}
3. strcpy:复制字符串
该函数用于将源字符串的内容复制到目标字符串中。
#include <stdio.h>
char *my_strcpy(char *dest, const char *src) {
char *original_dest = dest;
while (*src) {
*dest = *src;
dest++;
src++;
}
*dest = '\0'; // 确保目标字符串以 \0 结尾
return original_dest;
}
int main() {
char dest[
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式面试八股文全集 文章被收录于专栏
这是一个全面的嵌入式面试专栏。主要内容将包括:操作系统(进程管理、内存管理、文件系统等)、嵌入式系统(启动流程、驱动开发、中断管理等)、网络通信(TCP/IP协议栈、Socket编程等)、开发工具(交叉编译、调试工具等)以及实际项目经验分享。专栏将采用理论结合实践的方式,每个知识点都会附带相关的面试真题和答案解析。