C 常见字符串操作函数

news/2024/7/5 23:25:10

头文件 <string.h>

1. char *strstr(const char *str1, const char *str2);      判断str2是否为str1的子串 

//str1中包含str2子串情况

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char *str1 = "hello world!";
char *str2 = "world";

char *p = strstr(str1,str2);

printf("str1 = %p :%s\n",str1,str1);
printf("str2 = %p :%s\n",str2,str2);
printf("p = %p :%s\n",p,p);

return 0;
}

 输出结果

 

 

 

//str1中不包含str2子串情况

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char *str1 = "hello world!";
char *str2 = "world";

char *p = strstr(str2,str1);

printf("str1 = %p :%s\n",str1,str1);
printf("str2 = %p :%s\n",str2,str2);
printf("p = %p :%s\n",p,p);

return 0;
}

 输出结果:

 

 

 

2. char *strcat(char *dest, const char *src); 

 将字符串src头拼接在dest的'\0'位置,在重新拼接的字符串后重新添加 '\0'  ;注意事项dest空间足够大

 

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char dest[20] = "hello";
char *src = "world";
char *p = strcat(dest,src);
printf("dest = %p :%s\n",dest,dest);
printf("src = %p :%s\n",src,src);
printf("p = %p :%s\n",p,p);
return 0;
}

 运行结果:dest 要足够大不然包段错误

 

 

3. char *strncat(char *dest, const char *src, size_t n);  

把src所指字符串的前n个字符添加到dest所指字符串的结尾处,并覆盖dest所指字符串结尾的'\0',从而实现字符串的连接

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	char dest[10] = "hello ";
	char *src = "world";
	char *p = strncat(dest,src,3);
	printf("dest = %s\n",dest);
	printf("src = %s\n",src);
	printf("p = %s\n",p);
	return 0;
}

 输出结果:

 

 

4. char *strcpy(char *dest, const char *src);

把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	char dest[20] = "hello world!";
	char *src = "world";
	char *p = strcpy(dest,src);
	printf("dest = %p :%s\n",dest,dest);
	printf("src = %p  :%s\n",src,src);
	printf("p = %p    :%s\n",p,p);

	int len = sizeof(dest);
	int i=0;
	printf("dest[] = ");
	for(i=0;i<len;i++)
	{
		printf("%c",dest[i]);
	}
	putchar(10);
	printf("十进制打印\n");
	for(i=0;i<len;i++)
	{
		printf("%d\n",dest[i]);
	}
	putchar(10);
	return 0;
}

 输出结果:

 

 

5. char *strncpy(char *dest, const char *src, size_t n);

把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	char dest[20] = "hello";
	char *src = "world";
	char *p = strncpy(dest,src,1);
	printf("dest = %p :%s\n",dest,dest);
	printf("src = %p  :%s\n",src,src);
	printf("p = %p    :%s\n",p,p);

	return 0;
}

输出结果:

 

 

 

6.  int strcmp(const char *str1, const char *str2);

若str1=str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。
 

 

7.  int strncmp(const char *str1, const char *str2, size_t n);

str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	char dest[20] = "hello world!";
	char *src = "hellod";
	int num = strncmp(src,dest,4);
	printf("num = %d\n",num);
	return 0;
}

  

 

转载于:https://www.cnblogs.com/electronic/p/10795486.html


http://www.niftyadmin.cn/n/1167289.html

相关文章

data-toggle与data-target是什么作用

原文地址为&#xff1a; data-toggle与data-target是什么作用Bootstrap为这些a之类元素都绑定上了事件&#xff0c;而终止了链接默认行为。 data-toggle指以什么事件触发&#xff0c;常用的如modal,popover,tooltips等&#xff0c;data-target指事件的目标&#xff0c;一起使用…

Java的并发编程中的多线程问题到底是怎么回事儿?

2019独角兽企业重金招聘Python工程师标准>>> 在我之前的一篇《再有人问你Java内存模型是什么&#xff0c;就把这篇文章发给他。》文章中&#xff0c;介绍了Java内存模型&#xff0c;通过这篇文章&#xff0c;大家应该都知道了Java内存模型的概念以及作用&#xff0c…

支持向量机SVM介绍

SVM为了达到更好的泛化效果&#xff0c;会构建具有"max-margin"的分类器&#xff08;如下图所示&#xff09;&#xff0c;即最大化所有类里面距离超平面最近的点到超平面的距离&#xff0c;数学公式表示为$$\max\limits_{\vec{w},b}Margin(\vec{w},b)\max\limits_{\v…

《队长说得队》第三次作业:团队项目的原型设计

项目内容这个作业属于哪个课程>>2016级计算机科学与工程学院软件工程&#xff08;西北师范大学&#xff09;这个作业的要求在哪里>>实验七 团队作业3&#xff1a;团队项目原型设计与开发团队名称队长说得队作业学习目标&#xff08;1&#xff09;掌握软件原型开发技…

C# 操作ACCESS数据库

原文地址为&#xff1a; C# 操作ACCESS数据库在BETA2中&#xff0c;。NET提供了以下的NAMESPACE&#xff1a; System.Data Namespace System.Data.OleDb &#xff08;和BETA1中已经不同了&#xff0c;所以如果拿BETA1中的程序到BETA2中来运行肯定不可以的&#xff09; 如果想讲…

快速理解React的开发思想

相比较于VUE, 个人在开发过程中更加倾向于REACT&#xff0c; 不是因为REACT更好用&#xff0c;相反是更难用&#xff0c;就是大家所说的学习曲线陡&#xff0c; 但是REACT个人觉得正是因为他难用&#xff0c;或者说&#xff0c;代码风格更加趋近于原生JS,尤其是ES6的面向对象的…

现代IM系统中的消息系统架构 - 模型篇

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 在架构篇中我们介绍了现代IM消息系统的架构&#xff0c;介绍了Timeline的抽象模型以及基于Timeline模型构建的一个支持『消息漫游』、『多端同步』和『消息检索』多种高级功能的消息系统的典型架构。架构篇中为…

InfluxDB读写性能测试

原文地址为&#xff1a; InfluxDB读写性能测试这里将告诉您InfluxDB读写性能测试,教程操作步骤: 今天进行了InfluxDB和MySQL的对比测试&#xff0c;这里记录下结果&#xff0c;也方便我以后查阅。 操作系统&#xff1a; CentOS6.5_x64InfluxDB版本 &#xff1a; v1.1.0MySQL版本…