<string.h>头文件: C 语言字符串处理函数详解
2023-12-23 06:36:55
文章目录
引言
string.h
是 C 语言标准库中的头文件,主要用于处理字符串(character strings)的操作。该头文件中包含了一系列字符串处理的函数原型,这些函数在处理字符串时非常有用。下面是一些常见的 string.h
中的函数及其功能:
函数
strlen():
- 功能:计算字符串的长度,即不包括字符串末尾的空字符(‘\0’)的字符个数。
- 原型:
size_t strlen(const char *str);
#include <stdio.h>
#include <string.h>
int main() {
const char *str = "Hello, World!";
size_t length = strlen(str);
printf("字符串的长度:%zu\n", length);
return 0;
}
字符串的长度:13
%zu
是 C 语言中用于格式化输出的格式指示符之一。它用于打印size_t
类型的变量的值。在你的代码中,size_t
类型用于存储字符串的长度。
在printf
函数中,%zu
用于指示将要输出的是一个size_t
类型的值。这是为了保证跨平台的兼容性,因为size_t
类型的大小在不同的操作系统和编译器中可能会有所不同。
strcpy():
- 功能:复制一个字符串到另一个字符串。
- 原型:
char *strcpy(char *dest, const char *src);
#include <stdio.h>
#include <string.h>
int main() {
const char *src = "Hello, World!";
char dest[20];
strcpy(dest, src);
printf("复制的字符串: %s\n", dest);
return 0;
}
复制的字符串: Hello, World!
strncpy():
- 功能:从源字符串复制指定数量的字符到目标字符串。
- 原型:
char *strncpy(char *dest, const char *src, size_t n);
#include <stdio.h>
#include <string.h>
int main() {
const char *src = "Hello, World!";
char dest[20];
strncpy(dest, src, 5); // 复制前5个字符
printf("复制的字符串:%s\n", dest);
return 0;
}
复制的字符串:Hello
strcat():
- 功能:将一个字符串追加到另一个字符串的末尾。
- 原型:
char *strcat(char *dest, const char *src);
#include <stdio.h>
#include <string.h>
int main() {
char dest[20] = "Hello, ";
const char *src = "World!";
strcat(dest, src);
printf("连接后的字符串: %s\n", dest);
return 0;
}
连接后的字符串: Hello, World!
strncat():
- 功能:将一个字符串的指定数量的字符追加到另一个字符串的末尾。
- 原型:
char *strncat(char *dest, const char *src, size_t n);
#include <stdio.h>
#include <string.h>
int main() {
char dest[20] = "Hello, ";
const char *src = "World!";
strncat(dest, src, 3); // Concatenate first 3 characters of src
printf("连接后的字符串: %s\n", dest);
return 0;
}
连接后的字符串: Hello, Wor
strcmp():
- 功能:比较两个字符串。
- 原型:
int strcmp(const char *str1, const char *str2);
#include <stdio.h>
#include <string.h>
int main() {
const char *str1 = "你好";
const char *str2 = "你好吗";
int result = strcmp(str1, str2);
if (result == 0) {
printf("字符串相等\n");
} else if (result < 0) {
printf("字符串1小于字符串2\n");
} else {
printf("字符串1大于字符串2\n");
}
return 0;
}
字符串1小于字符串2
strncmp():
- 功能:比较两个字符串的前 n 个字符。
- 原型:
int strncmp(const char *str1, const char *str2, size_t n);
#include <stdio.h>
#include <string.h>
int main() {
const char *str1 = "你好";
const char *str2 = "你好吗";
int result = strncmp(str1, str2, 2); // 比较前2个字符
if (result == 0) {
printf("字符串前2个字符相等\n");
} else if (result < 0) {
printf("字符串1前2个字符小于字符串2前2个字符\n");
} else {
printf("字符串1前2个字符大于字符串2前2个字符\n");
}
return 0;
}
字符串前2个字符相等
strchr():
- 功能:在字符串中查找特定字符的第一次出现。
- 原型:
char *strchr(const char *str, int c);
#include <stdio.h>
#include <string.h>
int main() {
const char *str = "Hello, World!";
char target = 'o';
char *result = strchr(str, target);
if (result != NULL) {
printf("字符 '%c' 第一次出现的位置:%ld\n", target, result - str);
} else {
printf("字符 '%c' 未找到\n", target);
}
// result得到第一个o的地址
// result - str 计算出地址差值,就是第一次出现的位置
return 0;
}
字符 'o' 第一次出现的位置:4
strrchr():
- 功能:在字符串中查找特定字符的最后一次出现。
- 原型:
char *strrchr(const char *str, int c);
#include <stdio.h>
#include <string.h>
int main() {
const char *str = "Hello, World!";
char target = 'o';
char *result = strrchr(str, target);
if (result != NULL) {
printf("字符 '%c' 最后一次出现的位置:%ld\n", target, result - str);
} else {
printf("字符 '%c' 未找到\n", target);
}
// result得到最后一个o的地址
// result - str 计算出地址差值,就是最后一次出现的位置
return 0;
}
字符 'o' 最后一次出现的位置:8
strstr():
- 功能:在字符串中查找子串的第一次出现。
- 原型:
char *strstr(const char *haystack, const char *needle);
#include <stdio.h>
#include <string.h>
int main() {
const char *haystack = "Hello, World!";
const char *needle = "World";
char *result = strstr(haystack, needle);
if (result != NULL) {
printf("子串 '%s' 第一次出现的位置:%ld\n", needle, result - haystack);
} else {
printf("子串 '%s' 未找到\n", needle);
}
// result 得到子串的地址
// result - haystack 计算出地址差值,就是子串出现的位置
return 0;
}
子串 'World' 第一次出现的位置:7
strtok():
- 功能:将字符串拆分切分。
- 原型:
char *strtok(char *str, const char *delimiters);
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World,everyone";
const char *delimiters = ",";
char *token = strtok(str, delimiters);
while (token != NULL) {
printf("切分:%s\n", token);
token = strtok(NULL, delimiters);
}
return 0;
}
切分:Hello
切分:World
切分:everyone
这些函数为字符串的操作提供了基本的功能,从复制和连接到比较和搜索。使用这些函数时,请确保在处理字符串时不会越界,以避免不确定的行为。
文章来源:https://blog.csdn.net/PengXing_Huang/article/details/135163188
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!