简介
string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
库变量
下面是头文件 string.h 中定义的变量类型:
序号 | 变量 & 描述 |
---|---|
1 | size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 |
库宏
下面是头文件 string.h 中定义的宏:
序号 | 宏 & 描述 |
---|---|
1 | NULL 这个宏是一个空指针常量的值。 |
库函数
下面是头文件 string.h 中定义的函数:
序号 | 函数 & 描述 |
---|---|
1 | void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 |
2 | int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。 |
3 | void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。 |
4 | void *memmove(void *dest, const void *src, size_t n) 另一个用于从 str2 复制 n 个字符到 str1 的函数。 |
5 | void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 |
6 | char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 |
7 | char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 |
8 | char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。 |
9 | int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 |
10 | int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。 |
11 | int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。 |
12 | char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 |
13 | char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 |
14 | size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 |
15 | char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。 |
16 | size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 |
17 | char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。 |
18 | char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 |
19 | size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。 |
20 | char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 |
21 | char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。 |
22 | size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。 |
1.C 库函数 - memchr()
描述
C 库函数 void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。
声明
下面是 memchr() 函数的声明。
void *memchr(const void *str, int c, size_t n)
参数
- str – 指向要执行搜索的内存块。
- c – 以 int 形式传递的值,但是函数在每次字节搜索时是使用该值的无符号字符形式。
- n – 要被分析的字节数。
返回值
该函数返回一个指向匹配字节的指针,如果在给定的内存区域未出现字符,则返回 NULL。
实例
下面的实例演示了 memchr() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
const char str[] = "http://www.runoob.com";
const char ch = '.';
char *ret;
ret = (char*)memchr(str, ch, strlen(str));
printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
|.| 之后的字符串是 - |.runoob.com|
2.C 库函数 - memcmp()
描述
C 库函数 int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较。
声明
下面是 memcmp() 函数的声明。
int memcmp(const void *str1, const void *str2, size_t n)
参数
- str1 – 指向内存块的指针。
- str2 – 指向内存块的指针。
- n – 要被比较的字节数。
返回值
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
实例
下面的实例演示了 memcmp() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
memcpy(str1, "abcdef", 6);
memcpy(str2, "ABCDEF", 6);
ret = memcmp(str1, str2, 5);
if(ret > 0)
{
printf("str2 小于 str1");
}
else if(ret < 0)
{
printf("str1 小于 str2");
}
else
{
printf("str1 等于 str2");
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
str2 小于 str1
3.C 库函数 - memcpy()
描述
C 库函数 void *memcpy(void *str1, const void *str2, size_t n)从存储区 str2 复制 n 个字符到存储区 str1。
声明
下面是 memcpy() 函数的声明。
void *memcpy(void *str1, const void *str2, size_t n)
参数
- str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
- str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
- n – 要被复制的字节数。
返回值
该函数返回一个指向目标存储区 str1 的指针。
实例
下面的实例演示了 memcpy() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
const char src[50] = "http://www.w3cschool.cc";
char dest[50];
printf("Before memcpy dest = %s\n", dest);
memcpy(dest, src, strlen(src)+1);
printf("After memcpy dest = %s\n", dest);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
Before memcpy dest =
After memcpy dest = http://www.w3cschool.cc
4.C 库函数 - memmove()
描述
C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。
声明
下面是 memmove() 函数的声明。
void *memmove(void *str1, const void *str2, size_t n)
参数
- str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
- str2 – 指向要复制的数据源,类型强制转换为 void* 指针。
- n – 要被复制的字节数。
返回值
该函数返回一个指向目标存储区 str1 的指针。
实例
下面的实例演示了 memmove() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
const char dest[] = "oldstring";
const char src[] = "newstring";
printf("Before memmove dest = %s, src = %s\n", dest, src);
memmove(dest, src, 9);
printf("After memmove dest = %s, src = %s\n", dest, src);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
Before memmove dest = oldstring, src = newstring
After memmove dest = newstring, src = newstring
5.C 库函数 - memset()
描述
C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
声明
下面是 memset() 函数的声明。
void *memset(void *str, int c, size_t n)
参数
- str – 指向要填充的内存块。
- c – 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
- n – 要被设置为该值的字节数。
返回值
该值返回一个指向存储区 str 的指针。
实例
下面的实例演示了 memset() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
strcpy(str,"This is string.h library function");
puts(str);
memset(str,'$',7);
puts(str);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
This is string.h library function
$$$$$$$ string.h library function
6.C 库函数 - strcat()
描述
C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
声明
下面是 strcat() 函数的声明。
char *strcat(char *dest, const char *src)
参数
- dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
- src – 指向要追加的字符串,该字符串不会覆盖目标字符串。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。
实例
下面的实例演示了 strcat() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
strcpy(src, "This is source");
strcpy(dest, "This is destination");
strcat(dest, src);
printf("最终的目标字符串: |%s|", dest);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: |This is destinationThis is source|
7.C 库函数 - strncat()
描述
C 库函数 char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
声明
下面是 strncat() 函数的声明。
char *strncat(char *dest, const char *src, size_t n)
参数
- dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。
- src – 要追加的字符串。
- n – 要追加的最大字符数。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。
实例
下面的实例演示了 strncat() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
strcpy(src, "This is source");
strcpy(dest, "This is destination");
strncat(dest, src, 15);
printf("最终的目标字符串: |%s|", dest);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: |This is destinationThis is source|
8.C 库函数 - strchr()
描述
C 库函数 char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
声明
下面是 strchr() 函数的声明。
char *strchr(const char *str, int c)
参数
- str – 要被检索的 C 字符串。
- c – 在 str 中要搜索的字符。
返回值
该函数返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL。
实例
下面的实例演示了 strchr() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
const char str[] = "http://www.w3cschool.cc";
const char ch = '.';
char *ret;
ret = strchr(str, ch);
printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
|.| 之后的字符串是 - |.w3cschool.cc|
9.C 库函数 - strcmp()
描述
C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
声明
下面是 strcmp() 函数的声明。
int strcmp(const char *str1, const char *str2)
参数
- str1 – 要进行比较的第一个字符串。
- str2 – 要进行比较的第二个字符串。
返回值
该函数返回值如下:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
实例
下面的实例演示了 strncmp() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strcmp(str1, str2);
if(ret < 0)
{
printf("str1 小于 str2");
}
else if(ret > 0)
{
printf("str2 小于 str1");
}
else
{
printf("str1 等于 str2");
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
str2 小于 str1
10.C 库函数 - strncmp()
描述
C 库函数 int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。
声明
下面是 strncmp() 函数的声明。
int strncmp(const char *str1, const char *str2, size_t n)
参数
- str1 – 要进行比较的第一个字符串。
- str2 – 要进行比较的第二个字符串。
- n – 要比较的最大字符数。
返回值
该函数返回值如下:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
实例
下面的实例演示了 strncmp() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strncmp(str1, str2, 4);
if(ret < 0)
{
printf("str1 小于 str2");
}
else if(ret > 0)
{
printf("str2 小于 str1");
}
else
{
printf("str1 等于 str2");
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
str2 小于 str1
11.C 库函数 - strcoll()
描述
C 库函数 int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。
声明
下面是 strcoll() 函数的声明。
int strcoll(const char *str1, const char *str2)
参数
- str1 – 要进行比较的第一个字符串。
- str2 – 要进行比较的第二个字符串。
返回值
该函数返回值如下:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
实例
下面的实例演示了 strcoll() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abc");
strcpy(str2, "ABC");
ret = strcoll(str1, str2);
if(ret > 0)
{
printf("str1 小于 str2");
}
else if(ret < 0)
{
printf("str2 小于 str1");
}
else
{
printf("str1 等于 str2");
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
str1 小于 str2
12.C 库函数 - strcpy()
描述
C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。
声明
下面是 strcpy() 函数的声明。
char *strcpy(char *dest, const char *src)
参数
- dest – 指向用于存储复制内容的目标数组。
- src – 要复制的字符串。
返回值
该函数返回一个指向最终的目标字符串 dest 的指针。
实例
下面的实例演示了 strcpy() 函数的用法。
#include <stdio.h>
#include <string.h>
int main()
{
char src[40];
char dest[100];
memset(dest, '\0', sizeof(dest));
strcpy(src, "This is runoob.com");
strcpy(dest, src);
printf("最终的目标字符串: %s\n", dest);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: This is runoob.com
13.C 库函数 - strncpy()
描述
C 库函数 char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
声明
下面是 strncpy() 函数的声明。
char *strncpy(char *dest, const char *src, size_t n)
参数
- dest – 指向用于存储复制内容的目标数组。
- src – 要复制的字符串。
- n – 要从源中复制的字符数。
返回值
该函数返回最终复制的字符串。
实例
下面的实例演示了 strncpy() 函数的用法。在这里,我们使用函数 memset() 来清除内存位置。
#include <stdio.h>
#include <string.h>
int main()
{
char src[40];
char dest[12];
memset(dest, '\0', sizeof(dest));
strcpy(src, "This is w3cschool.cc");
strncpy(dest, src, 10);
printf("最终的目标字符串: %s\n", dest);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
最终的目标字符串: This is w3
14.C 库函数 - strcspn()
描述
C 库函数 size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
声明
下面是 strcspn() 函数的声明。
size_t strcspn(const char *str1, const char *str2)
参数
- str1 – 要被检索的 C 字符串。
- str2 – 该字符串包含了要在 str1 中进行匹配的字符列表。
返回值
该函数返回 str1 开头连续都不含字符串 str2 中字符的字符数。
实例
下面的实例演示了 strcspn() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str1[] = "ABCDEF4960910";
const char str2[] = "013";
len = strcspn(str1, str2);
printf("第一个匹配的字符是在 %d\n", len + 1);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
第一个匹配的字符是在 10
15.C 库函数 - strerror()
描述
C 库函数 char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。strerror 生成的错误字符串取决于开发平台和编译器。
声明
下面是 strerror() 函数的声明。
char *strerror(int errnum)
参数
- errnum – 错误号,通常是 errno。
返回值
该函数返回一个指向错误字符串的指针,该错误字符串描述了错误 errnum。
实例
下面的实例演示了 strerror() 函数的用法。
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main ()
{
FILE *fp;
fp = fopen("file.txt","r");
if( fp == NULL )
{
printf("Error: %s\n", strerror(errno));
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开一个不存在的文件:
Error: No such file or directory
16.C 库函数 - strlen()
描述
C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
声明
下面是 strlen() 函数的声明。
size_t strlen(const char *str)
参数
- str – 要计算长度的字符串。
返回值
该函数返回字符串的长度。
实例
下面的实例演示了 strlen() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
int len;
strcpy(str, "This is w3cschool.cc");
len = strlen(str);
printf("|%s| 的长度是 |%d|\n", str, len);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
|This is w3cschool.cc| 的长度是 |20|
17.C 库函数 - strpbrk()
描述
C 库函数 char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。
声明
下面是 strpbrk() 函数的声明。
char *strpbrk(const char *str1, const char *str2)
参数
- str1 – 要被检索的 C 字符串。
- str2 – 该字符串包含了要在 str1 中进行匹配的字符列表。
返回值
该函数返回 str1 中第一个匹配字符串 str2 中字符的字符数,如果未找到字符则返回 NULL。
实例
下面的实例演示了 strpbrk() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
const char str1[] = "abcde2fghi3jk4l";
const char str2[] = "34";
char *ret;
ret = strpbrk(str1, str2);
if(ret)
{
printf("第一个匹配的字符是: %c\n", *ret);
}
else
{
printf("未找到字符");
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
第一个匹配的字符是: 3
18.C 库函数 - strrchr()
描述
C 库函数 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。
声明
下面是 strrchr() 函数的声明。
char *strrchr(const char *str, int c)
参数
- str – C 字符串。
- c – 要搜索的字符。以 int 形式传递,但是最终会转换回 char 形式。
返回值
该函数返回 str 中最后一次出现字符 c 的位置。如果未找到该值,则函数返回一个空指针。
实例
下面的实例演示了 strrchr() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str[] = "http://www.w3cschool.cc";
const char ch = '.';
char *ret;
ret = strrchr(str, ch);
printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
|.| 之后的字符串是 - |.cc|
19.C 库函数 - strspn()
描述
C 库函数 size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
声明
下面是 strspn() 函数的声明。
size_t strspn(const char *str1, const char *str2)
参数
- str1 – 要被检索的 C 字符串。
- str2 – 该字符串包含了要在 str1 中进行匹配的字符列表。
返回值
该函数返回 str1 中第一个不在字符串 str2 中出现的字符下标。
实例
下面的实例演示了 strspn() 函数的用法。
#include <stdio.h>
#include <string.h>
int main ()
{
int len;
const char str1[] = "ABCDEFG019874";
const char str2[] = "ABCD";
len = strspn(str1, str2);
printf("初始段匹配长度 %d\n", len );
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
初始段匹配长度 4
20.C 库函数 - strstr()
描述
C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。
声明
下面是 strstr() 函数的声明。
char *strstr(const char *haystack, const char *needle)
参数
- haystack – 要被检索的 C 字符串。
- needle – 在 haystack 字符串内要搜索的小字符串。
返回值
该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。
实例
下面的实例演示了 strstr() 函数的用法。
#include <stdio.h>
#include <string.h>
int main()
{
const char haystack[20] = "W3CSchool";
const char needle[10] = "School";
char *ret;
ret = strstr(haystack, needle);
printf("子字符串是: %s\n", ret);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
子字符串是: School
21.C 库函数 - strtok()
描述
C 库函数 char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。
声明
下面是 strtok() 函数的声明。
char *strtok(char *str, const char *delim)
参数
- str – 要被分解成一组小字符串的字符串。
- delim – 包含分隔符的 C 字符串。
返回值
该函数返回被分解的最后一个子字符串,如果没有可检索的字符串,则返回一个空指针。
实例
下面的实例演示了 strtok() 函数的用法。
#include <string.h>
#include <stdio.h>
int main()
{
const char str[80] = "This is - www.w3cschool.cc - website";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL )
{
printf( " %s\n", token );
token = strtok(NULL, s);
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
This is
www.w3cschool.cc
website
22.C 库函数 - strxfrm()
描述
C 库函数 size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。
声明
下面是 strxfrm() 函数的声明。
size_t strxfrm(char *dest, const char *src, size_t n)
参数
- dest – 指向存储内容的目标数组的指针,如果参数 n 为 0,则它是一个空指针。
- src – 要被转换为当前区域设置的 C 字符串。
- n – 被复制到 str1 的最大字符数。
返回值
该函数返回被转换字符串的长度,不包括空结束字符。
实例
下面的实例演示了 strxfrm() 函数的用法。
#include <stdio.h>
#include <string.h>
int main()
{
char dest[20];
char src[20];
int len;
strcpy(src, "W3C School");
len = strxfrm(dest, src, 20);
printf("字符串 |%s| 的长度是: |%d|", dest, len);
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
字符串 |W3C School| 的长度是: |10|