C语言字符串处理函数
11个月前 (04-28)
C语言提供了丰富的字符串处理函数,可以对字符串进行输入、输出、并、修改、比较、转换、、搜索等操作,使用这些现成的函数可以大大减轻我们的编程负担。
用于输入输出的字符串函数,例如
strcat() 将把 arrayName2 连接到 arrayName1 后面,并删除原来 arrayName1 的结束标志
strcat() 的返回值为 arrayName1 的地址。
Input a URL: http://c.biancheng网站站点" rel="nofollow" />
字符本身没有大小之分,strcmp() 以各个字符对应的 ASCII 码值进行比较。strcmp() 从两个字符串的第 0 个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。
返回值:若 arrayName1 和 arrayName2 相同,则返回0;若 arrayName1 大于 arrayName2,则返回大于 0 的值;若 arrayName1 小于 arrayName2,则返回小于0 的值。
a VS b: 32
a VS c: -31
a VS d: 0
用于输入输出的字符串函数,例如
printf
、puts
、scanf
、gets
等,使用时要包含头文件stdio.h
,而使用其它字符串函数要包含头文件string.h
。string.h
是一个专门用来处理字符串的头文件,它包含了很多字符串处理函数,由于篇幅限制,本节只能讲解几个常用的,有兴趣的读者请猛击这里查阅所有函数。字符串连接函数 strcat()
strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:
arrayName1、arrayName2 为需要拼接的字符串。strcat(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网站站点" rel="nofollow" />
strcpy(arrayName1, arrayName2);
strcpy() 会把 arrayName2 中的字符串拷贝到 arrayName1 中,字符串结束标志'\0'
也一同拷贝。请看下面的例子:arrayName1 和 arrayName2 是需要比较的两个字符串。#include <stdio.h>
#include <string.h>
int main(){
char str1[50] = "《C语言变怪兽》";
char str2[50] = "http://c.biancheng网站站点" rel="nofollow" />
strcmp(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