C 语言字符串函数
在C语言中,字符串是以字符数组的形式存储的,以空字符 \0
结尾。C语言标准库提供了许多用于操作字符串的函数,这些函数可以帮助我们轻松地处理字符串。本文将介绍一些常用的字符串函数,并通过示例展示它们的用法。
1. 字符串的基本概念
在C语言中,字符串是一个字符数组,数组的最后一个元素是空字符 \0
,用于表示字符串的结束。例如:
char str[] = "Hello, World!";
在这个例子中,str
是一个字符数组,包含了字符串 "Hello, World!"
,并以 \0
结尾。
2. 常用的字符串函数
C语言标准库 <string.h>
提供了许多用于操作字符串的函数。以下是一些常用的字符串函数:
2.1 strlen
- 获取字符串长度
strlen
函数用于计算字符串的长度,不包括结尾的空字符 \0
。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
int length = strlen(str);
printf("字符串的长度是: %d\n", length);
return 0;
}
输出:
字符串的长度是: 13
2.2 strcpy
- 复制字符串
strcpy
函数用于将一个字符串复制到另一个字符串中。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[20];
strcpy(dest, src);
printf("复制后的字符串是: %s\n", dest);
return 0;
}
输出:
复制后的字符串是: Hello, World!
2.3 strcat
- 连接字符串
strcat
函数用于将一个字符串连接到另一个字符串的末尾。
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello, ";
char str2[] = "World!";
strcat(str1, str2);
printf("连接后的字符串是: %s\n", str1);
return 0;
}
输出:
连接后的字符串是: Hello, World!
2.4 strcmp
- 比较字符串
strcmp
函数用于比较两个字符串。如果两个字符串相等,返回 0
;如果第一个字符串小于第二个字符串,返回负数;如果第一个字符串大于第二个字符串,返回正数。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("字符串相等\n");
} else if (result < 0) {
printf("str1 小于 str2\n");
} else {
printf("str1 大于 str2\n");
}
return 0;
}
输出:
str1 小于 str2
2.5 strchr
- 查找字符
strchr
函数用于在字符串中查找指定字符的第一次出现的位置。如果找到,返回指向该字符的指针;否则返回 NULL
。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strchr(str, 'W');
if (ptr != NULL) {
printf("找到字符 'W',位置在: %ld\n", ptr - str);
} else {
printf("未找到字符 'W'\n");
}
return 0;
}
输出:
找到字符 'W',位置在: 7
2.6 strstr
- 查找子字符串
strstr
函数用于在字符串中查找指定子字符串的第一次出现的位置。如果找到,返回指向该子字符串的指针;否则返回 NULL
。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strstr(str, "World");
if (ptr != NULL) {
printf("找到子字符串 'World',位置在: %ld\n", ptr - str);
} else {
printf("未找到子字符串 'World'\n");
}
return 0;
}
输出:
找到子字符串 'World',位置在: 7
3. 实际应用案例
假设我们需要编写一个程序,从用户输入的字符串中提取出所有的数字字符,并将它们拼接成一个新的字符串。我们可以使用 strchr
函数来查找数字字符,并使用 strcat
函数将它们拼接起来。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char input[100];
char numbers[100] = "";
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin);
for (int i = 0; i < strlen(input); i++) {
if (isdigit(input[i])) {
strncat(numbers, &input[i], 1);
}
}
printf("提取的数字字符是: %s\n", numbers);
return 0;
}
输入:
请输入一个字符串: Hello123World456!
输出:
提取的数字字符是: 123456
4. 总结
本文介绍了C语言中常用的字符串函数,包括 strlen
、strcpy
、strcat
、strcmp
、strchr
和 strstr
。这些函数可以帮助我们轻松地处理字符串操作。通过实际案例,我们展示了如何将这些函数应用于实际问题中。
5. 附加资源与练习
- 练习1:编写一个程序,将用户输入的两个字符串连接起来,并输出连接后的字符串。
- 练习2:编写一个程序,比较用户输入的两个字符串,并输出它们的大小关系。
- 练习3:编写一个程序,查找用户输入的字符串中是否包含指定的子字符串,并输出查找结果。
通过练习这些题目,你将更好地掌握C语言字符串函数的使用方法。祝你学习愉快!