C语言<string.h>常用函数整理

2023-05-16

整理了string.h中常用的几个函数,仅供参考!
1、strcpy()
2、memcpy()
3、strcat()
4、strchr()
5、strstr()
6、strcmp()
7、memcmp()
8、strset()
9、memset()

声明头文件
#include <string.h>

函数名:strcpy()

功能 :拷贝一个字符串到另一个
函数原型:char *strcpy(char *dest, const char *src)
参数介绍:
dest – 指向用于存储复制内容的目标数组
src – 要复制的字符串
返回值:返回一个指向最终的目标字符串 dest 的指针
程序例程:

#include <stdio.h>
#include <string.h>
int main()
{
   char string[10];
   char *str1 = "abcdefghi";

   strcpy(string, str1);
   printf("%s\n", string);
   return 0;
}
//运行结果:abcdefghi;

函数名:memcpy()

功能 :从存储区 str2 复制 n 个字节到存储区 str1
函数原型:void *memcpy(void str1, const void str2, size_t n)
参数介绍:
str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void
指针。
str2 – 指向要复制的数据源,类型强制转换为 void
指针。
n – 要被复制的字节数。
返回值:返返回一个指向目标存储区 str1 的指针
程序例程:

#include<stdio.h>
#include<string.h>
 
int main(void)
{
  char src[] = "***";
  char dest[] = "kangkang";
  printf("使用 memcpy 前: %s\n", dest);
  memcpy(dest, src, strlen(src));
  printf("使用 memcpy 后: %s\n", dest);
  memcpy(dest+8, src, strlen(src));
  printf("改变地址后: %s\n", dest);
  return 0;
}
运行结果:
使用 memcpy 前: kangkang
使用 memcpy 后: ***gkang
改变地址后: ***gkang***

strcpy与memcpy的区别:
memcpy可以指定字节数进行复制,复制到存储的数组中只会覆盖复制字节长度的字符
strcpy可以进行字符串复制,但是是整体复制,会覆盖原有的字符串内容
函数名:

strcat()

功能 :
用来将两个字符串连接(拼接)起来
函数原型:
charstrcat(char s1, const char* s2)
把s2加到s1后面
参数介绍:
s1:目的字符串,数组包含了一个 C 字符串,且足够容纳追加后的字符串
s2:源字符串。指向要追加的字符串,该字符串不会覆盖目标字符串。
返回值:
返回一个指向最终的目标字符串 s1的指针
程序例程:

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

int main(void)
{
   char s1[50];//定义一个空数组
   const char *s2= "A  ";   //定义想要追加的内容
   const char *s22 = "kang  ";//const保证字符串常量不被改变
   const char *s222= "love studay!";//不加const会警告

   strcpy(s1, s2);
   strcat(s1, s22);
   strcat(s1, s222);

   printf("%s\n", s1);
   return 0;
}
//运行结果:A  kang  love studay!

函数名:

strchr()

功能 :
检索字符串中第一次出现目标字符的位置
函数原型:
char *strchr(const char *str, char c)
参数介绍:
str – 要被检索的字符串
c – 在 str 中要搜索的字符
返回值:
返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL
程序例程:

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

int main(void)
 {
    char string[50];//保证数组足够大
    char *ptr, c = 'i';

    strcpy(string, "DeMaXiYa");//复制过去
    ptr = strchr(string, c);//检索
    printf("%p\n",string);//打印字符串初始地址
    printf("%p\n",ptr);//打印字符出现的地址
    
    if (ptr)
       {
       	printf("%c 在第%d的位置\n", c, ptr-string);
        printf("%c 后面的字符串%s\n", c, ptr+1);//把i的长度加上
	   }
    else
       printf("The character was not found\n");
    return 0;
 }
/* 运行结果:
000000000062FE00  
000000000062FE05  地址0————5
i 在第5的位置
i 后面的字符串Ya*/

函数名:

strstr()

功能 :
用于判断字符串str2是否是str1的子串
函数原型:
char *strstr(const char *str1, const char *str2)
参数介绍:
str1 – 要被检索的字符串
str2-- 在 str1 中要搜索的字符
返回值:
如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
程序例程:

int main()
{
   const char father[50] = "AiOuNiYa,AngYangBuMie";
   const char son[50] = "AngYangBuMie";
   char *p;
 
   p = strstr(father, son);
 
   printf("子字符串是: %s\n", p);
   printf("%p\n",&father[9]);
   printf("%p\n",p);
   return(0);
}
//打印结果:子字符串是: 
子字符串是: AngYangBuMie
数组中地址:  000000000062FDA9
返回p 地址:  000000000062FDA9

函数名:

strcmp()

函数原型:
int strcmp(char *str1, char *str2)
功能 :
比较两个字符串,str1>str2,返回值 > 0;str1 = str2,返回0
str1 < str2,返回值<0;
参数介绍:
str1: 比较的字符串1
str2:比较的字符串2
返回值:
返回值为整形
程序例程:

#include <stdio.h>
#include <string.h>
 
int main ()
{
   char str1[15];
   char str2[15];
   int ret; 
   strcpy(str1, "qwerdf");
   strcpy(str2, "QWERDF");
   ret = strcmp(str1, str2);
   if(ret < 0)
      printf("str1 小于 str2");
   else if(ret > 0) 
      printf("str1 大于 str2");
   else 
      printf("str1 等于 str2");
   
   return 0;
}
//运行结果:str1 大于 str2

函数名:

memcmp()

函数原型:
int memcmp(const void *str1, const void *str2, size_t n)
功能 :
把存储区 str1 和存储区 str2 的前 n 个字节进行比较
参数介绍:
str1 – 指向内存块的指针。
str2 – 指向内存块的指针。
n – 要被比较的字节数。
返回值:
返回值为整形
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。
程序例程:

 #include <stdio.h>
#include <string.h>
 
int main ()
{
   char str1[15];
   char str2[15];
   int ret; 
   memcpy(str1, "qwerdf",6);
   memcpy(str2, "QWERDF",6);
   ret = memcmp(str1, str2,5);
   if(ret < 0)
      printf("str1 小于 str2");
   else if(ret > 0) 
      printf("str1 大于 str2");
   else 
      printf("str1 等于 str2");
   
   return 0;
}
//运行结果:str1 大于 str2  

函数名:

strset()

函数原型:
char *strset(char *str, char c)
功能 :
将一个字符串中的所有字符都设为指定字符
参数介绍:
str:字符串
c : 指定字符
返回值:
返回一个指向最终的目标字符串 str的指针
程序例程:

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

int main(void)
{
   char str[10] = "6666666";
   char set = 'c';

   printf("Before strset(): %s\n", str);
   strset(str, set);
   printf("After strset():  %s\n", str);
   return 0;
}
//运行结果:
Before strset(): 6666666
After strset():  ccccccc

函数名:

memset()

函数原型:
void *memset(void *str, int c, size_t n)
功能 :
复制字符C到参数 str 所指向的字符串的前 n 个字符
参数介绍:
str – 指向要填充的内存块。
c – 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
n – 要被设置为该值的字符数。
返回值:
该值返回一个指向存储区 str 的指针
程序例程:

#include<stdio.h>
#include <string.h>
int main() 
{
	char buf[1024] = {0};//定义一个数组
	int i=0;
	for(i=0;i<=10;i++)
	{
		sprintf(buf,"当前计数值为:%d!", i);//把i传进前面的字符串,i值一直变化,形成字符动态的显示(计数)
		printf("%s\n",buf);
	}
	
	const char *s1 = "Akang ";
	const char *s2 = "love lining";
	memset(buf,0,1024);//把buf全部初始化为0;
	sprintf(buf,"%s%s",s1,s2);//拼接,把s1s2格式化输出,存到buf中
	printf("%s\n",buf);
    
    char str[50];
    strcpy(str,"STM32");
    memset(str,'+',3);//把+++复制到str前三个字符;我理解为把str前三个字符设置为+++
    printf("%s\n",str);
	 
}
//sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用在调用strlen(str)求字符串的长度。 
//运行结果:
当前计数值为:0!
当前计数值为:1!
当前计数值为:2!
当前计数值为:3!
当前计数值为:4!
当前计数值为:5!
当前计数值为:6!
当前计数值为:7!
当前计数值为:8!
当前计数值为:9!
当前计数值为:10!
Akang love lining
+++32

生命不息,战斗不止!
在这里插入图片描述

加油!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言<string.h>常用函数整理 的相关文章

  • 浅析C++中struct和class的区别

    文章目录 C和C 43 43 中struct的区别C 43 43 中struct和class的区别 C和C 43 43 中struct的区别 struct最早是在C语言中出现的 xff0c 但在C语言中struct只是一种 用户自定义数据类
  • C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法

    本文可解决的问题 在一个头文件 h中定义一个结构体 在另一个 h文件中使用这个结构体引发错误C2143 语法错误 缺少 在 的前面 编译源文件 等莫名的报错头文件的交叉包含 即头文件a包含了头文件b 头文件b又包含了头文件a多个不同的头文件
  • 使用python进行http请求自动登录处理302跳转的问题

    一 问题背景 最近在做一个自动化业务处理的程序时 xff0c 需要完成对系统的自动登录 经过抓包测试只需要使用简单的post请求后收到的回包中包含cookie信息 xff0c 因此可以据此完成登录 程序设计思路为发送求到登录验证页面 xff
  • C# TCP/UDP网络通讯调试助手(含源码)

    C TCP UDP网络通讯调试助手 1 客户端界面 1 客户端界面 源码下载地址 xff1a https download csdn net download kingleitao 11927885
  • socketcan

    参考 lt lt Linux Can编程详解 gt gt CAN原理介绍 https www cnblogs com spoorer p 6649303 html 一 初始化工作 SocketCAN 中大部分的数据结构和函数在头文件 lin
  • vscode+cmake 实现C++项目的完整编译

    1 项目目录 span class token builtin class name span bin build CMakeLists txt include array 2d h common h swap h lib src arra
  • 航模常用硅胶线、热缩管规格

    一般穿越机中信号线等用26或28awg xff0c 外径1 3 1 5mm xff0c 配套热缩管选用2mm的比较合适 供电电源线一般用10awg或12awg xff0c 外径4 5 5 4mm xff0c 配套热缩管为7mm比较合适 14
  • POCO C++库学习和分析 -- 线程 (一)

    POCO C 43 43 库学习和分析 线程 xff08 一 xff09 线程是程序设计中用的非常多的技术 xff0c 在UI设计 xff0c 网络通讯设计中广泛使用 在POCO库中 xff0c 线程模块可以分成6个部分去理解 锁 xff0
  • 100条经典C语言笔试题目

    100 条经典C语言笔试题目 题目来源 xff1a 1 中兴 华为 慧通 英华达 微软亚洲技术中心等中 外企业面试题目 xff1b 2 C 语言面试宝典 林锐 高质量编程第三版 说明 xff1a 1 部分C 语言面试题中可能会参杂部分和C
  • hadoop2.7完全分布式集群搭建以及任务测试

    要想深入的学习hadoop数据分析技术 xff0c 首要的任务是必须要将hadoop集群环境搭建起来 xff0c 本文主要讲述如何搭建一套hadoop完全分布式集群环境 环境配置 xff1a 2台64位的redhat6 5 43 1台64位
  • /etc/passwd, /etc/shadow

    使用者帐号 xff1a etc passwd etc shadow 由上面的说明您大概已经知道 xff0c 嘿嘿 xff01 帐号管理最重要的两个档案就是 etc passwd 与 etc shadow 了 xff01 这两个档案可以说是
  • 密集负载下的网卡中断负载均衡smp affinity及单队列RPS

    简单的说就是 xff0c 每个硬件设备 xff08 如 xff1a 硬盘 网卡等 xff09 都需要和 CPU 有某种形式的通信以便 CPU 及时知道发生了什么事情 xff0c 这样 CPU 可能就会放下手中的事情去处理应急事件 xff0c
  • 基于stm32f103zet6之最小系统的制作

    因为嵌入式老师一直鼓励我们去学习stm32 xff0c 他说这是一款很不错的片子 xff0c 所以就萌生了学习stm32的念头 xff0c 之前一直在学习基于arm11的OK6410 xff0c 裸机跑到触摸屏就没有再继续了 xff0c 感
  • 基于stm32f103zet6的DS1302学习

    由于硬件出了问题 xff0c 也就是外部低速晶振没用 xff0c 震不起来 xff0c 然后查看了网上的帖子 xff0c STM32的RTC果然口碑不怎么样 xff0c 所以果断换DS1302 xff0c 在移植的过程中还算顺利 xff0c
  • 基于stm32f103zet6之使用FSMC驱动TFT的学习

    在完成IO驱动彩屏的试验后 xff0c 就准备着手使用FSMC来驱动彩屏 xff0c 先了解一下预备知识 一 所谓的FSMC机制 简单介绍FSMC在这篇博文里面很清楚 xff0c 推荐一下 http blog csdn net king b
  • (转)ds18b20时序说明

    ds18b20时序说明 新手在DS18B20读写过程中要犯很多错误 老衲普度众生 xff0c 简要说明它怎么用 1 过程1 2是初始化过程 xff0c 每次读取都要初始化 xff0c 否则18b20处于待机状态 xff0c 无法成功读取 过
  • H桥驱动芯片IR2110功能简介

    1 1 驱动芯片IR2110功能简介 在功率变换装置中 xff0c 根据主电路的结构 xff0c 起功率开关器件一般采用直接驱动和隔离驱动两种方式 美国IR公司生产的IR2110驱动器 xff0c 兼有光耦隔离和电磁隔离的优点 xff0c
  • 关于示波器是否必须要接地线的疑问

    这是一个非常隐蔽的问题 xff0c 稍不注意 xff0c 在接入示波器时 xff0c 就会导致线路板上的某些芯片突然爆炸 xff0c 不仅会对项目产生非常大的影响 xff0c 也足以让我们着实郁闷上几天 所以 xff0c 应该足够引起电路设
  • POCO C++库学习和分析 -- 进程

    POCO C 43 43 库学习和分析 进程 Poco Foundation库中涉及进程的内容主要包括了4个主题 xff0c 分别是进程 Process 进程间同步 xff08 inter process synchronization x
  • Mysql安装后在服务里找不到和服务启动不起来的解决方法

    一 安装完MySQL后找不到服务 在那完MySQL数据库后 xff0c 在计算机管理 61 61 服务和应用程序 61 61 服务中找不到MySQL的服务 解决方法 xff1a 1 以管理员的身份运行cmd或者Windows powersh

随机推荐

  • C++中虚继承

    一 虚继承和虚基类 1 多继承产生的冲突 在C 43 43 中多继承时很容易产生命名冲突 xff0c 即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字 xff0c 命名冲突依然有可能发生 xff0c 比如典型的是菱形继承 x
  • 跨平台C++单元测试框架——GTest

    1 简介 GTest是google公司发布的一个跨平台的 Liunx Mac OS X Windows Cygwin Windows CE and Symbian C 43 43 单元测试框架 它提供了丰富的断言 致命和非致命判断 参数化
  • 音频格式之AAC(高级音频编码技术)

    1 简介 ACC xff08 Advanced Audio Coding xff0c 高级音频编码 xff09 是杜比实验室为音乐社区提供的技术 xff0c 出现于1997年 xff0c 基于MPEG 2的音频编码技术 2000年 xff0
  • C++11之lambda回调设置与应用

    在程序中有时候我们需要实现回调效果 xff0c 比如先设置监听 xff0c 然后在后面具体执行完某个操作后再将该操作的结果通知给前面监听中 这种机制实际很常用 xff0c 比如window底下的消息机制 xff0c Qt中的信号槽的机制都有
  • 高速的C/C++编译工具——ccache

    1 简介 ccache xff08 compiler cache 的缩写 xff09 是一个编译器缓存 xff0c 该工具会高速缓存编译生成的信息 xff0c 并在编译的特定部分使用高速缓存的信息 xff0c 比如头文件 xff0c 这样就
  • Django17:内建用户系统

    1 定义 Django带有一个用户认证系统 它处理用户账号 组 权限以及基于cookie的用户会话 用户可以直接是使用Django自带的用户表 2 基本字段 模型类位置from django contrib contrib auth mod
  • Django18:文件上传

    1 上传规范 xff08 1 xff09 前端HTML 文件上传必须为POST提交方式 表达 lt form gt 中文件上传时必须带有enctype 61 multipart formdata 时才会包含文件内容数据 表单中用 lt in
  • Django19:发送邮件

    1 邮件相关协议 xff08 1 xff09 SMTP SMTP xff08 Simple Mail Transfer Protocol xff09 xff0c 简单邮件传输协议 xff08 25号端口 xff09 它是一组用于从原地址到目
  • JsonCpp的基本用法

    1 JsonCpp C 43 43 库 xff0c 允许操作JSON值 xff0c 包括与字符串串行化和序列化 它可在反序列化 序列化步骤中保留现有注释 xff0c 使其成为存储用户输入文件的便捷方式 是一个第三方JSON解析库 xff0c
  • POCO C++库学习和分析 -- 文件系统

    POCO C 43 43 库学习和分析 文件系统 既然作为一个框架性的库 xff0c 自然会提供对于文件系统的操作 在Poco库中 xff0c 封装了一些类去完成上述操作 这些类包括了 xff1a 1 Poco Path 2 Poco Fi
  • C++中的HTTP协议

    1 HTTP Hyper Text Transfer Protocol xff08 超文本传输协议 xff09 是一种通信协议 xff0c 它允许将超文本标记语言 HTML 文档从Web服务器传送到客户端的浏览器 在Internet中所有的
  • C++中析构函数为虚函数

    1 析构函数是否定义为虚函数的区别 xff08 1 xff09 析构函数定义为虚函数时 xff1a 基类指针可以指向派生类的对象 xff08 多态性 xff09 xff0c 如果删除该指针delete p xff1b 就会调用该指针指向的派
  • [Linux C]TCP通讯例程

    这个是最最最基本的例程 xff0c 先开一个坑 xff0c 稍后再慢慢完善 服务端程序 include lt stdio h gt include lt stdlib h gt include lt string h gt include
  • STM32串口环形缓冲区实现

    stm32串口环形缓冲区 一 ringbuff h span class token macro property span class token directive hash span span class token directiv
  • C++系列8:常用库

    1 cmath 数学计算 include lt iostream gt include lt cmath gt using namespace std int main 数字定义 short s 61 10 int i 61 1000 lo
  • C语言 字符串函数

    C语言 字符串函数 一 字符串长度函数 strlen二 不受限制的字符串函数2 1 复制字符串函数 strcpy2 2 字符串连接函数 strcat2 3 字符串比较函数strcmp 三 长度受限制的字符串函数3 1 复制字符串函数 str
  • HTTP基本认证(Basic Authentication)的JAVA示例

    大家在登录网站的时候 xff0c 大部分时候是通过一个表单提交登录信息 但是有时候浏览器会弹出一个登录验证的对话框 xff0c 如下图 xff0c 这就是使用HTTP基本认证 下面来看看一看这个认证的工作过程 第一步 客户端发送http r
  • c++各种常用库

    cmath xff1a 开根号 xff1a include lt iostream gt include lt cmath gt using namespace std int main double x 61 8 cout lt lt p
  • 安装cv2遇到的小问题解决

    前面文章中也用到了cv2这个包 安装cv2只需要输入下面指令 xff0c pip install opencv python 我在给我的树莓派安装时 xff0c 后面还遇到了一些问题 先是出现 ImportError libcblas so
  • C语言<string.h>常用函数整理

    整理了string h中常用的几个函数 xff0c 仅供参考 xff01 1 strcpy 2 memcpy 3 strcat 4 strchr 5 strstr 6 strcmp 7 memcmp 8 strset 9 memset 声明