🎈个人主页:[甘甜的江]
🎉欢送 👍点赞✍评论⭐珍藏
🤗收录专栏:[c 语言]
🤝心愿本文对您有所裨益,如有不足之处,欢送在评论区提出斧正,让咱们独特学习、交换提高!
引言:
在 C 语言中,解决字符串是一项常见且重要的工作。为了无效地操作字符串,C 语言提供了许多内置的字符串处理函数。
本文将介绍一些常见的 C 语言字符串函数,包含字符串搜寻函数、字符串长度函数和字符串宰割函数。
通过理解这些函数的用法和原理,你将可能更轻松地解决和操作字符串数据。
一、字符串搜寻函数
当在 C 语言中须要在字符串中搜寻特定字符或子字符串时,能够应用以下几个常见的字符串搜寻函数:strchr、strrchr 和 strstr。上面将具体介绍它们的用法、示例以及注意事项。
1.1 strchr (String Character):
用法:
strchr 函数用于在字符串中查找指定字符的第一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。
示例:
#include <stdio.h>
#include <string.h>
int main() {char str[] = "hello world";
char *ptr;
ptr = strchr(str, 'o');
if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);
} else {printf("Not found\n");
}
return 0;
}
后果:
Found at position: 4
代码剖析:
这段 C 代码首先定义了一个字符数组 str 蕴含字符串 “hello world”。而后,通过调用 strchr 函数,在字符串中查找字符 ‘o’ 的第一次呈现的地位,并将该地位的指针赋值给 ptr 变量。
接着,通过条件判断查看 ptr 是否为 NULL,如果不是,则示意找到了字符 ‘o’,并应用 printf 函数输入其在字符串中的地位(通过指针减法计算绝对地位),否则输入 “Not found”。
最初,程序返回 0,示意失常执行完结。
这段代码的作用是在字符串中查找字符 ‘o’ 的第一次呈现地位,并输入后果。
在给定的示例字符串 “hello world” 中,字符 ‘o’ 第一次呈现在地位 4(从零开始计数),因而输入后果为 “Found at position: 4″。
注意事项:
strchr 函数只返回第一个匹配项的指针,如果须要找到所有匹配项,能够应用循环遍历字符串。
留神解决返回值为 NULL 的状况,示意未找到匹配项。
1.2 strrchr (String Reverse Character):
用法:
strrchr 函数用于在字符串中查找指定字符的最初一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。
示例:
#include <stdio.h>
#include <string.h>
int main() {char str[] = "hello world";
char *ptr;
ptr = strrchr(str, 'o');
if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);
} else {printf("Not found\n");
}
return 0;
}
后果:
Found at position: 7
代码剖析:
这段 C 代码首先定义了一个字符数组 str 蕴含字符串 “hello world”。
而后,通过调用 strrchr 函数,在字符串中从右往左查找字符 ‘o’ 的最初一次呈现的地位,并将该地位的指针赋值给 ptr 变量。
接着,通过条件判断查看 ptr 是否为 NULL,如果不是,则示意找到了字符 ‘o’,并应用 printf 函数输入其在字符串中的地位(通过指针减法计算绝对地位),否则输入 “Not found”。
最初,程序返回 0,示意失常执行完结。
这段代码的作用是在字符串中查找字符 ‘o’ 的最初一次呈现地位,并输入后果。
在给定的示例字符串 “hello world” 中,字符 ‘o’ 最初一次呈现在地位 7(从零开始计数),因而输入后果为 “Found at position: 7″。
注意事项:
strrchr 函数从字符串的开端开始搜寻,找到第一个匹配项后即进行搜寻,返回该匹配项的指针。
解决返回值为 NULL 的状况,示意未找到匹配项。
1.3 strstr (String Search):
用法:
strstr 函数用于在字符串中查找指定子字符串的第一个匹配项,并返回该子字符串的指针。如果未找到子字符串,则返回 NULL。
示例:
#include <stdio.h>
#include <string.h>
int main() {char str[] = "hello world";
char *ptr;
ptr = strstr(str, "lo");
if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);
} else {printf("Not found\n");
}
return 0;
}
后果:
Found at position: 3
代码剖析:
这段 C 代码首先定义了一个字符数组 str 蕴含字符串 “hello world”。
而后,通过调用 strstr 函数,在字符串中查找子字符串 “lo” 的第一次呈现的地位,并将该地位的指针赋值给 ptr 变量。
接着,通过条件判断查看 ptr 是否为 NULL,如果不是,则示意找到了子字符串 “lo”,并应用 printf 函数输入其在字符串中的地位(通过指针减法计算绝对地位),否则输入 “Not found”。
最初,程序返回 0,示意失常执行完结。
这段代码的作用是在字符串中查找子字符串 “lo” 的第一次呈现地位,并输入后果。
在给定的示例字符串 “hello world” 中,子字符串 “lo” 第一次呈现在地位 3(从零开始计数),因而输入后果为 “Found at position: 3″。
注意事项:
strstr 函数会从字符串中找到第一个匹配子字符串的地位,并返回该子字符串的指针。
解决返回值为 NULL 的状况,示意未找到匹配项。
这些函数是在 C 语言中罕用的字符串搜寻工具,能够依据具体需要抉择适合的函数来实现字符串搜寻性能。
二、字符串长度函数
当在 C 语言中须要获取字符串的长度时,能够应用 strlen 函数。上面将具体介绍 strlen 函数的用处、用法、示例以及注意事项。
2.1 strlen (String Length):
用处:
strlen 函数用于计算字符串的长度,即字符串中的字符个数,不包含字符串结束符(’\0’)。
用法:
函数原型如下:
size_t strlen(const char *str);
参数 str:要计算长度的字符串。
返回值:返回字符串的长度。
示例:
#include <stdio.h>
#include <string.h>
int main() {char str[] = "hello world";
size_t length;
length = strlen(str);
printf("Length of the string: %zu\n", length);
return 0;
}
后果:
Length of the string: 11
代码剖析:
这段 C 代码首先定义了一个字符数组 str 蕴含字符串 “hello world”。
而后,通过调用 strlen 函数获取字符串的长度,并将后果赋值给 length 变量。
接着,通过应用 printf 函数输入字符串的长度,格式化字符串中 %zu 是用于打印 size_t 类型的长度。
最初,程序返回 0,示意失常执行完结。
这段代码的次要性能是计算并输入字符串 “hello world” 的长度。
在给定的示例中,字符串的长度为 11,因而输入后果为 “Length of the string: 11″。
注意事项:
strlen 返回的是 size_t 类型的无符号整数,因而应用 %zu 格局说明符打印后果。
留神字符串中的结束符 \0 不计入计算长度,即返回值为字符串中字符的理论个数。
这是一个简略而罕用的字符串操作函数,用于获取字符串的长度。在应用时,须要留神字符串的结尾必须是空字符 \0。如果字符串没有正确以空字符结尾,strlen 可能会导致未定义的行为。
因而,在应用 strlen 时,确保字符串是以空字符正确终止的。
三、字符串宰割函数
strtok 函数用于在 C 语言中宰割字符串。它容许你将一个字符串拆分成多个子字符串,依据指定的分隔符进行宰割。
上面将具体介绍 strtok 函数的用处、用法、示例以及注意事项。
3.1 strtok (String Tokenizer):
用处:
strtok 用于将字符串拆分成一系列的标记(tokens),这些标记由用户指定的分隔符来定义。
每次调用 strtok,它返回下一个标记,直到字符串完结或者再没有其余标记为止。
用法:
函数原型如下:
char *strtok(char *str, const char *delimiters);
参数 str:要宰割的字符串,第一次调用时传入待宰割的字符串,后续调用传入 NULL。
参数 delimiters:分隔符字符串,蕴含所有可能的分隔符。
返回值:返回下一个标记的指针,如果没有更多标记则返回 NULL。
示例:
#include <stdio.h>
#include <string.h>
int main() {char str[] = "apple,orange,banana";
const char delimiters[] = ",";
// 第一次调用
char *token = strtok(str, delimiters);
while (token != NULL) {printf("Token: %s\n", token);
// 后续调用,传入 NULL 示意持续应用同一字符串
token = strtok(NULL, delimiters);
}
return 0;
}
后果:
Token: apple
Token: orange
Token: banana
代码剖析:
这段 C 代码首先定义了一个字符数组 str 蕴含字符串 “apple,orange,banana”,以及一个蕴含分隔符 “,” 的字符数组 delimiters。
而后,通过第一次调用 strtok 函数,将字符串 str 依照分隔符 “,” 进行宰割,并返回第一个宰割后的子字符串的指针,并将该指针赋值给 token 变量。
接着,通过一个 while 循环,一直查看 token 是否为 NULL,如果不是,则示意仍有未解决的子字符串,顺次输入每个子字符串,并通过后续调用 strtok(NULL, delimiters)
持续获取下一个宰割后的子字符串,直到所有子字符串都被处理完毕。
最初,程序返回 0,示意失常执行完结。
这段代码的作用是将字符串 “apple,orange,banana” 依照逗号进行宰割,并输入每个宰割后的子字符串。
输入后果为每个子字符串(apple、orange、banana)别离占一行。
注意事项:
strtok 在解决字符串时会批改原始字符串,将分隔符替换为 \0,因而须要审慎应用,特地是当原始字符串是常量字符串时。
在多线程环境下,strtok 是不可重入的,因为它应用了动态变量来记录以后的解析地位。
如果字符串中有间断的分隔符,strtok 会将它们视为一个分隔符解决,因而可能返回空标记
四 总结:
本文介绍了 C 语言中的一些常见字符串函数,包含字符串搜寻函数、字符串长度函数和字符串宰割函数。
通过学习这些函数,咱们能够在 C 语言中更加灵便和高效地解决字符串数据。
字符串搜寻函数 strchr、strrchr 和 strstr 能够帮忙咱们在字符串中查找特定字符或子字符串的地位。
字符串长度函数 strlen 可能精确地计算字符串的长度,为字符串操作提供了根底。
字符串宰割函数 strtok 则可能将字符串依照指定的分隔符进行宰割,提取出其中的子字符串。
通过把握这些字符串函数的应用办法,咱们能够更加高效地编写 C 语言程序,并解决各种字符串操作需要。
这篇文章到这就完结啦
谢谢大家的浏览!
如果感觉这篇博客对你有用的话,别忘记三连哦。
我是甘甜的江,让咱们咱们下次再见
本文由博客一文多发平台 OpenWrite 公布!