C语言使用字符串处理函数

1.puts函数——输出字符串的函数。
一般形式为:
puts(字符数组)
作用:将一个字符串(以’\0’结束的字符序列)输出终端。假如已定义str是一个字符数组名,且该数组已被初始化为"China"。则执行:

int main()
{
	char str[] = { "China" };
	puts(str);
	return 0;
}

其结果是
请添加图片描述
由于可以用printf函数输出字符串,因此puts函数用得不多。
用puts函数输出的字符串中可以包含转义字符。例如

int main()
{
	char str1[] = { "China\nBeijing" };
	puts(str1);
	return 0;
}

输出:
请添加图片描述
在用puts函数输出时将字符串结束标志’\0’转换成’\n’,即输出完字符串之后换行。
2.gets函数——输入字符串函数
在Visual Studio 中用gets_s来代替gets。
一般形式为:
gets(字符数组)
作用:从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
执行如下函数:

int main()
{
	char str[10];
	gets_s(str);
	return 0;
}

如果从键盘输入Computer,按下回车键。则将输入的字符串"Computer"送给字符数组str(送给数组的共有9个字符,不是8个),返回的函数值是字符数组str的第一个元素的地址。一般采用gets函数的目的是向字符数组输入一个字符串,而不大关心其函数值。

注意:用puts和gets函数只能输出或输入一个字符串。不能写成:puts(str1,str2);gets(str1,str2);

3.strcat函数——字符串连接函数。
一般形式:
strcat(字符数组1,字符数组2)
作用:把两个字符数组中的字符串连接起来,把字符串2,接到字符串1后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。例如

int main()
{
	char str1[20] = { "I am " };
	char str2[] = { "a girl." };
	printf("%s", strcat(str1, str2));
		return 0;
}

输出
请添加图片描述
说明:
(1)字符数组1必须足够大,以便容纳连接后的新字符串。如果在定义是使用**char str1[] = { "I am " };**就会出问题,因为长度不够。
(2)连接前两个字符串后面都有’\0’,连接时将字符串1后面的’\0’取消,只在新串最后保留’\0’。
4.strcpy和strncpy函数——字符串复制函数
一般形式:
strcpy(字符数组1,字符数组2);
作用:将字符串2复制到字符串1中去。例如

int main()
{
	char str1[20] ;
	char str2[] = {"China"};
	printf("%s\n", strcpy(str1, str2));
	return 0;
}

输出
请添加图片描述
说明:
(1)字符数组1必须定义得足够大,以便容纳被复制的字符数组2.字符数组1的长度不应该小于字符数组2的长度。
(2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。例如

int main()
{
	char str1[20] ;
	printf("%s\n", strcpy(str1, "China"));
	return 0;
}

请添加图片描述
(3)如果复制前未对str1数组初始化或赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后面的’\0’一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符并不一定是’\0’,而是str1中原有的最后4个字节的内容。
(4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值,正如数值型数组不能被赋值一样。如下面语句都是不合法的:str1="China";str1=str2;。只能用strcpy函数将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋值给一个字符型变量或者字符数组元素。如下面语句是合法的:

char a[5],c1,c2;
c1='A';c2='B';
a[0]='C';a[1]='h';a[2]='i';a[3]='n';a[4]='a';

(5)可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。例如

int main()
{
	char str1[] = { "girl" };
	char str2[20] = { "boy" };
	printf("%s", strncpy(str2, str1, 2));
	return 0;
}

输出
请添加图片描述
printf(“%s”, strncpy(str2, str1, 2)); 作用是:将str2中前面2个字符复制到str1中去,取代str1中原有的最前面2个字符。但复制的字符个数n不应该多于str1中原有的字符(不包括’\0’)。
5.strcmp函数——字符串比较函数
一般形式:
strcmp(字符串1,字符串2)
作用:比较字符串1和字符串2。例如strcmp(str1,str2); strcmp("China","Korea");以及strcmp(str1,"Beijing");
说明:字符串比较的规则是:将两个字符串自左向右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或者遇到’\0’为止。
(1)如全部字符相同,则认为两个字符串相等;
(2)若出现不同的字符,则以第一对不同的字符的比较结果为准。例如
“A”<“B”,“a”>“A”,“computer”>“compare”,“these”>“that”,“1A”>“$20”,“CHINA”>“CANADA”,“DOG”>“cat”,“Tsinghua”>“TSINGHUA”
说明:在英文字典中位置在后面的为“大”但要注意小写字母比大写字母大。
比较的结果由函数值带回:
(1)如果字符串1与字符串2相同,则函数值为0。
(2)如果字符串1>字符串2,则函数值为一个正整数。
(3)如果字符串1<字符串2,则函数值为一个负整数。
注意:字符串比较不能用以下形式:

if(str1>atr2)
	printf("yes");

因为str1和str2代表地址而不代表数组中的全部元素,而只能用

if(strcmp(str1,str2)>0)
	printf("yes");

这时,系统分别找到两个字符数组的第一个元素,然后顺序比较数组中的各元素的值。例如

int main()
{
	char str1[] = { "China" };
	char str2[] = { "Korea" };
	if (strcmp(str1, str2) > 0)
		printf("str1大于str2");
	else if (strcmp(str1, str2) < 0)
		printf("str1小于str2");
	else if (strcmp(str1, str2) == 0)
		printf("str1等于str2");
	return 0;
}

输出:
请添加图片描述
6.strlen函数——测字符串长度的函数
一般形式:
strlen(字符数组)
作用:测试字符串长度,函数的值为字符串中的实际长度,不包括’\0’。例如

int main()
{
	char str[] = { "China" };
	printf("%d\n", strlen(str));
	printf("%d\n", strlen("boy"));
	return 0;
}

输出
请添加图片描述
7.strlwr函数——转换为小写的函数
一般形式:
strlwr(字符串)
作用:将字符串中的大写字母换成小写字母。例如

int main()
{
	char str1[] = "COMpuTer";
	char* str2 = strlwr(str1);
	printf("%s", str1);
	return 0;
}

输出
请添加图片描述
8.strupr函数——转换为大写的函数
一般形式:
strupr(字符串)
作用:将字符串中的小写字母换成大写字母。例如

int main()
{
	char str1[] = "comPUTer";
	printf("%s", strupr(str1));
	return 0;
}

输出:
请添加图片描述
一定要注意在使用字符串处理函数时,应当在程序文件的开头用#include<string.h>,把string.h文件包含到文本文件中。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值