跳到主要内容

C 语言字符串函数

在C语言中,字符串是以字符数组的形式存储的,以空字符 \0 结尾。C语言标准库提供了许多用于操作字符串的函数,这些函数可以帮助我们轻松地处理字符串。本文将介绍一些常用的字符串函数,并通过示例展示它们的用法。

1. 字符串的基本概念

在C语言中,字符串是一个字符数组,数组的最后一个元素是空字符 \0,用于表示字符串的结束。例如:

c
char str[] = "Hello, World!";

在这个例子中,str 是一个字符数组,包含了字符串 "Hello, World!",并以 \0 结尾。

2. 常用的字符串函数

C语言标准库 <string.h> 提供了许多用于操作字符串的函数。以下是一些常用的字符串函数:

2.1 strlen - 获取字符串长度

strlen 函数用于计算字符串的长度,不包括结尾的空字符 \0

c
#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 函数用于将一个字符串复制到另一个字符串中。

c
#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 函数用于将一个字符串连接到另一个字符串的末尾。

c
#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;如果第一个字符串小于第二个字符串,返回负数;如果第一个字符串大于第二个字符串,返回正数。

c
#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

c
#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

c
#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 函数将它们拼接起来。

c
#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语言中常用的字符串函数,包括 strlenstrcpystrcatstrcmpstrchrstrstr。这些函数可以帮助我们轻松地处理字符串操作。通过实际案例,我们展示了如何将这些函数应用于实际问题中。

5. 附加资源与练习

  • 练习1:编写一个程序,将用户输入的两个字符串连接起来,并输出连接后的字符串。
  • 练习2:编写一个程序,比较用户输入的两个字符串,并输出它们的大小关系。
  • 练习3:编写一个程序,查找用户输入的字符串中是否包含指定的子字符串,并输出查找结果。

通过练习这些题目,你将更好地掌握C语言字符串函数的使用方法。祝你学习愉快!