教育改变生活
标题:
【C语言】字符串处理函数
[打印本页]
作者:
wander
时间:
2024-4-1 18:54
标题:
【C语言】字符串处理函数
本帖最后由 wander 于 2024-4-1 18:56 编辑
C语言提供了丰富的字符串处理函数,可以对字符串进行输入、输出、合并、修改、比较、转换、复制、搜索等操作,使用这些现成的函数可以大大减轻我们的编程负担。
用于输入输出的字符串函数,例如
printf
、
puts
、
scanf
、
gets
等,使用时要包含头文件
stdio.h
,而使用其它字符串函数要包含头文件
string.h
。
string.h
是一个专门用来处理字符串的头文件,它包含了很多字符串处理函数,本次介绍几个常用的函数:
字符串连接函数 strcat()
strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:
strcat(arrayName1, arrayName2);
arrayName1、arrayName2 为需要拼接的字符串。
strcat() 将把 arrayName2 连接到 arrayName1 后面,并删除原来 arrayName1 最后的结束标志
'\0'
。
这意味着,arrayName1 必须足够长,要能够同时容纳 arrayName1 和 arrayName2,否则会越界(超出范围)。
strcat() 的返回值为 arrayName1 的地址。
下面是一个简单的演示:
#include
<stdio.h>
#include
<string.h>
int
main
()
{
char
str1
[
100
]=
"The URL is "
;
char
str2
[
60
];
printf
(
"Input a URL: "
);
gets
(
str2
);
strcat
(
str1
,
str2
);
puts
(
str1
);
return
0
;
}
运行结果:
Input a URL:
http://c.biancheng.net/cpp/u/jiaocheng/
↙
The URL is
http://c.biancheng.net/cpp/u/jiaocheng/
字符串复制函数 strcpy()
strcpy 是 string copy 的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,语法格式为:
strcpy(arrayName1, arrayName2);
strcpy() 会把 arrayName2 中的字符串拷贝到 arrayName1 中,字符串结束标志
'\0'
也一同拷贝。请看下面的例子:
#include
<stdio.h>
#include
<string.h>
int
main
()
{
char
str1
[
50
=
"《C语言变怪兽》"
;
char
str2
[
50
=
"http://c.biancheng.net/cpp/u/jiaocheng/"
;
strcpy
(
str1
,
str2
);
printf
(
"str1: %s
\n
"
,
str1
);
return
0
;
}
运行结果:
str1:
http://c.biancheng.net/cpp/u/jiaocheng/
你看,将 str2 复制到 str1 后,str1 中原来的内容就被覆盖了。
另外,strcpy() 要求 arrayName1 要有足够的长度,否则不能全部装入所拷贝的字符串。
字符串比较函数 strcmp()
strcmp 是 string compare 的缩写,意思是字符串比较,语法格式为:
strcmp(arrayName1, arrayName2);
arrayName1 和 arrayName2 是需要比较的两个字符串。
字符本身没有大小之分,strcmp() 以各个字符对应的 ASCII 码值进行比较。strcmp() 从两个字符串的第 0 个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。
返回值:若 arrayName1 和 arrayName2 相同,则返回0;若 arrayName1 大于 arrayName2,则返回大于 0 的值;若 arrayName1 小于 arrayName2,则返回小于0 的值。
对4组字符串进行比较:
#include
<stdio.h>
#include
<string.h>
int
main
()
{
char
a
[]
=
"aBcDeF"
;
char
b
[]
=
"AbCdEf"
;
char
c
[]
=
"aacdef"
;
char
d
[]
=
"aBcDeF"
;
printf
(
"a VS b: %d
\n
"
,
strcmp
(
a
,
b
));
printf
(
"a VS c: %d
\n
"
,
strcmp
(
a
,
c
));
printf
(
"a VS d: %d
\n
"
,
strcmp
(
a
,
d
));
return
0
;
}
运行结果:
a VS b: 32
a VS c: -31
a VS d: 0
欢迎光临 教育改变生活 (http://bbs.goldoar.com/)
Powered by Discuz! X3.2