c/c++字符串处理函数

一,获取字符串长度:strlen()

#include<stdio.h>
#include<string.h>

int main()
{
	char str[]="I love FishC.com";
	
	printf("sizeof str = %d\n",sizeof(str));//获取字符类型的字符串所占空间长度 
	printf("sizeof str = %d\n",strlen(str));//获取字符串长度 
	
	
	return 0;
}`

二,拷贝字符串:strcpy() 和 strncpy()
1,strcpy()演示:

#include<stdio.h>
#include<string.h>

int main()
{
	char str1[] = "Original String";
	char str2[] = "New String";
	char str3[100];
	
	strcpy(str1,str2);//把str2 → str1 
					  //注意str1字符串的长度要大于str2  
	strcpy(str3,"Copy Successful");
	
	printf("str1: %s\n",str1);
	printf("str2: %s\n",str2);
	printf("str3: %s\n",str3);
	
	
	return 0;
 } 

运行结果:

str1: New String
str2: New String
str3: Copy Successful

[注意]:
在某些编译环境下(linux中的vi编译环境),如果strcpy(str1,str2)中
str2字符串长度大于str1会出现字符串的丢失,如:

#include<stdio.h>
#include<string.h>

int main()
{
	char str1[] = "Original String";
	char str2[] = "New String";
	char str3[100];
	
	strcpy(str2,str1);//把str1 → str2 
					  //注意str1字符串的长度大于str2  
	strcpy(str3,"Copy Successful");
	
	
	printf("str1: %s\n",str1);
	printf("str2: %s\n",str2);
	printf("str3: %s\n",str3);
	
	
	return 0;
 } 

运行结果:

str1: tring
str2: Original String
str3: Copy Successful

2,考虑到这个,在拷贝字符串时可能会限制字符串的长度,就有了如下的函数:
strncpy(str1,str2,n)

#include<stdio.h>
#include<string.h>

int main()
{
	char str1[] = "to be or not to be";
	char str2[40];
	
	strncpy(str2,str1,5);
	str2[5] = '\0';
	
	printf("str2 = %s\n",str2);
	
	return 0;
}

在Dev-C++中如果没有str2[5] = '\0';是不会有影响的,但在某些编译环境下,strncpy(str1,str2,n)函数只是把字符串复制了过来,并没有把字符串最后的'\0'复制过来,此时就需要我们手动加一个终止字符(即语句:str2[5] = '\0';)
三,连接字符串:strcat()和strncat()
1,strcat(str1,str2)

#include<stdio.h>
#include<string.h>

int main()
{
	char str1[] = "to be or not to be";
	char str2[] = "That is a question";
	
	strcat(str1," ");
	strcat(str1,str2);//可以试试把str1和str2互换一下
	
	printf("str1 = %s\n",str1);
	
	return 0;
}

运行结果:

 str1 = to be or not to be That is a question

这里 有意思的是把strcat(str1,str2);str1和str2互换一下
运行结果:

   str1 = o be

具体原因是什么,我也不清楚
2,strncat(str1,str2,n)

strncat(str1,str2,n)函数与strncpy(str1,str2,n)函数类似,只有一点不相同,就是strncat(str1,str2,n)函数会自动地在后边添加一个'\0'不像strncpy(str1,str2,n)函数在某些编译器下需要手动添加
四,比较字符串函数strcmp()和strncmp()
1,strcmp(str1,str2)
strcmp(str1,str2)函数会比较str1和str2两个字符串,
如果两个字符串相同,返回0;
如果不相同,返回一个非0的整数(两个字符串ASCLL码差值)

#include<stdio.h>
#include<string.h>

int main()
{
	char str1[] = "to be or not to be";
	char str2[] = "to be or not to be";
	
	if(!strcmp(str1,str2))
	{
		printf("两个字符串完全一致");
	}
	else
	{
		printf("两个字符串不一致");
	} 

	
	return 0;
}

输出结果

两个字符串完全一致

2,strncmp()
类似的strncmp(str1,str2,n)函数是比较两个字符串前n个字符是某相同,相同返回0
不同返回一个非0的数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值