网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 104|回复: 0
打印 上一主题 下一主题

【C语言】字符串处理函数

[复制链接]

616

主题

623

帖子

2807

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2807
跳转到指定楼层
楼主
发表于 2024-4-1 18:54:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wander 于 2024-4-1 18:56 编辑

C语言提供了丰富的字符串处理函数,可以对字符串进行输入、输出、合并、修改、比较、转换、复制、搜索等操作,使用这些现成的函数可以大大减轻我们的编程负担。

用于输入输出的字符串函数,例如printfputsscanfgets等,使用时要包含头文件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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-5-4 11:48 , Processed in 0.051278 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表