【C语言字符串相关函数大全】

news2024/11/19 17:39:27

【C语言字符串相关函数大全】

  • 【1】atof
  • 【2】atoi
  • 【3】atol
  • 【4】isalnum
  • 【5】isdigit
  • 【6】islower
  • 【7】isupper
  • 【8】isprint
  • 【9】memchr
  • 【10】memcmp
  • 【11】memcpy
  • 【12】memset
  • 【13】strcat
  • 【14】strchr
  • 【15】strcmp
  • 【16】strpbrk
  • 【17】strstr
  • 【18】strtok
  • 【19】源码
  • 【20】源码执行结果

在这里插入图片描述

整洁的新C++ #include目录不需要直接映射到filenames(没有.h), 至少对于标准库是这样

【1】atof

double atof( const char *str );

功能:将字符串str转换成一个双精度数值并返回结果。 <参数str 必须以有效数字开头>
但是允许以“E”或“e”除外的任意非数字字符结尾。
例如: x = atof( “42.0is_the_answer” );
x的值为42.0.

【2】atoi

 int atoi( const char *str );

功能:将字符串str转换成一个整数并返回结果。
<参数str 以数字开头>,当函数从str 中读到非数字字符则结束转换并将结果返回。
例如,
i = atoi( “512.035” ); i 的值为 512

【3】atol

long atol( const char *str );

功能:将字符串转换成长整型数并返回结果。
函数会扫描参数str字符串,<跳过前面的空格字符>
直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时才结束转换,并将结果返回。
例如, x = atol( “1024.0001” ); x的值为1024L

【4】isalnum

int isalnum( int ch );

功能:如果参数是数字或字母字符,函数返回非零值,否则返回零值。
cout<<“isalnum()返回值=”<<isalnum(‘5’) <<endl; //0-9之间 返回值好像4

【5】isdigit

getchar();  
int isdigit( int ch );

功能:如果参数是0到9之间的数字字符,函数返回非零值1,否则返回零值0.

【6】islower

// int islower( int ch );
// 功能:如果参数是小写字母字符,函数返回非零值,否则返回零值。

【7】isupper

// int isupper( int ch );
// 功能:如果参数是大写字母字符,函数返回非零值,否则返回零值。

【8】isprint

// int isprint( int ch );
// 功能:如果参数是可打印字符(包括空格),函数返回非零值,否则返回零值。

【9】memchr

//void *memchr( const void *buffer, int ch, size_t count ); //常量指针 字符 常量指针指向的数组(字符串)有效长度
//功能:函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。
//返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。

【10】memcmp

//int memcmp( const void *buffer1, const void *buffer2, size_t count );
/*功能:函数比较buffer1 和 buffer2的前count 个字符。返回值如下:
返回值Value=
解释
less than 0
第一个参数 < 第二个

equal to 0
两个参数相等

greater than 0
第一个参数 > 第二个 */

【11】memcpy

// void *memcpy( void *to, const void *from, size_t count ); //(保存位置, 被保存的值, 保存多少大小)
//功能:函数从from中复制count 个字符到to中, 并返回to指针。 如果to 和 from 重叠,则函数行为不确定。

【12】memset

// void *memset( void *buffer, int ch, size_t count );
// 功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:
// char the_array[10];
// char * jk = (char *)memset( the_array, ‘\0’, sizeof(the_array) );

【13】strcat

//char *strcat( char *str1, const char *str2 );
//功能:函数将字符串str2 连接到str1的末端,并返回指针str1.

【14】strchr

//char *strchr( const char *str, int ch );
//功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。

【15】strcmp

// int strcmp( const char *str1, const char *str2 );
// 功能:比较字符串str1 and str2, 返回值如下:
// 返回值
// 解释
// less than 0
// str1 is less than str2

// equal to 0
// str1 is equal to str2

// greater than 0
// str1 is greater than str2

【16】strpbrk

//char *strpbrk( const char *str1, const char *str2 );
//功能:函数返回一个指针,它指向字符串str2中任意字符在字符串str1 首次出现的位置,如果不存在返回NULL。

【17】strstr

// char *strstr( const char *str1, const char *str2 );
//功能:函数返回一个指针,它指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL。

【18】strtok

//char *strtok( char *str1, const char *str2 );
//功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。
//如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。
//之后所有的调用str1 都应为NULL。 最为常用 jfj; fsj ; jsdhfj ; 返回;前的字符串 第一个参数str 第二个开始NULL

内容太多,其他不在举例,自己源码看

【19】源码

#include <iostream>
#include <string.h>   //和字符串相关的头文件
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

#include <stdlib.h>
 #include <ctype.h>   //isalnum头文件
using namespace std;
int main(int argc, char const *argv[])
{
    // double atof( const char *str );
    //功能:将字符串str转换成一个双精度数值并返回结果。 <参数str 必须以有效数字开头>
    //但是允许以“E”或“e”除外的任意非数字字符结尾。例如:
    //x = atof( "42.0is_the_answer" );
    //x的值为42.0.
    double ret =atof("123.34fddj9090ghfj");  //a (十进制字符串)to f(双精度)
    cout<<"atof结果ret ="<<ret<<endl;


    // int atoi( const char *str );
    // 功能:将字符串str转换成一个整数并返回结果。<参数str 以数字开头>,当函数从str 中读到非数字字符则结束转换并将结果返回。例如,
    // i = atoi( "512.035" );
    // i 的值为 512.
    int ret1=atoi("222sdjhfjdshf");
    cout<<"atoi的结果="<<ret1<<endl;


    // long atol( const char *str );
    // 功能:将字符串转换成长整型数并返回结果。函数会扫描参数str字符串,<跳过前面的空格字符>
    //直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时才结束转换,并将结果返回。例如,
    // x = atol( "1024.0001" );
    // x的值为1024L.
    int ret3=atol("   -122 hsf 8889 ");
    cout<<"atol的结果="<<ret3<<endl;

    // int isalnum( int ch );
    // 功能:如果参数是数字或字母字符,函数返回非零值,否则返回零值。
    cout<<"isalnum()返回值="<<isalnum('5') <<endl;  //0-9之间  返回值好像4
    if( isalnum('5') )
    printf( "You entered character \n");

    // getchar();  
    //int isdigit( int ch );
    //功能:如果参数是0到9之间的数字字符,函数返回非零值,否则返回零值.
    int ret4= isdigit('3');
    cout<<"isdiget函数的返回值="<<ret4<<endl;  //0-9之间数  :好像返回值1    其他字符:返回值=0
    if( ret4 )
        printf( "You entered the digit %c\n" ); 


    // int islower( int ch );
    // 功能:如果参数是小写字母字符,函数返回非零值,否则返回零值。
    ret= islower('a');
    cout<<"islower返回值是="<<ret<<endl;  //1
    if(ret) //非零即真
    {
        cout<<"是小写字母a"<<endl;
    }


    // int isupper( int ch );
    // 功能:如果参数是大写字母字符,函数返回非零值,否则返回零值。
    ret= isupper('A');
    cout<<"upper返回值是="<<ret<<endl;  //1
    if(ret) //非零即真
    {
        cout<<"是小写字母A"<<endl;
    }


    // int isprint( int ch );
    // 功能:如果参数是可打印字符(包括空格),函数返回非零值,否则返回零值。
    int ch;
    cout<<"请输入字符判断是否可打印:";
    scanf("%c",&ch);
    ret =isprint(ch);
    if(ret)
        cout<<"isprintf函数是可打印的"<<endl;
    else
         cout<<"isprintf函数是不可打印的"<<endl;

 
//******************************************************************************************************************************
    //void *memchr( const void *buffer, int ch, size_t count );  //常量指针  字符  常量指针指向的数组(字符串)有效长度
    //功能:函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。
    //返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。例如:
    const char *names = "Alan Bob Chris X Dave"; //匿名数组
    if( memchr(names,'X',strlen(names)) == NULL )
        printf( "Didn't find an X\n" );
    else
        printf( "Found an  X\n" );


//******************************************************************************************************************************************
//int memcmp( const void *buffer1, const void *buffer2, size_t count );
/*功能:函数比较buffer1 和 buffer2的前count 个字符。返回值如下:
Value 
 解释 


less than 0 
第一个参数 < 第二个
 
equal to 0 
 两个参数相等
 
greater than 0 
第一个参数 > 第二个 */
ret =memcmp("abc","abcd",4);
if(ret >0)
    cout<<"第一个大于第二个"<<endl;
else
   cout<<"第一个 小于 第二个"<<endl; 




// void *memcpy( void *to, const void *from, size_t count );  //(保存位置, 被保存的值, 保存多少大小)
 //功能:函数从from中复制count 个字符到to中, 并返回to指针。 如果to 和 from 重叠,则函数行为不确定。
 char buffer[100]="djsfldsjfksjfskj";
 cout<<"buffer zise ="<<sizeof(buffer)<<endl;
 char *p;  //定义指针  
 char * buf =(char *)memcpy(p,buffer, sizeof(buffer)); //从d开始  赋值
 cout<<" 拷贝的值="<<p<< endl;
 cout<<"buf="<<buf<<endl;




    // void *memset( void *buffer, int ch, size_t count );
    // 功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:
    // char the_array[10];
    // char * jk = (char *)memset( the_array, '\0', sizeof(the_array) );
    // // 这是将一个数组的所有分量设置成零的很便捷的方法。
    // if(jk != NULL)
    //     cout<<"指针指向位置为! NULL"<<endl;


    //char *strcat( char *str1, const char *str2 );
    //功能:函数将字符串str2 连接到str1的末端,并返回指针str1. 例如:
    // printf( "Enter your name: " );
    // char *title;
    // scanf("%s",title);
    // strcat( title, " the Great" );
    // printf( "Hello, %s\n", title );




    //char *strchr( const char *str, int ch );
    //功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。




    // int strcmp( const char *str1, const char *str2 );
    // 功能:比较字符串str1 and str2, 返回值如下:
    // 返回值 
    // 解释  
    // less than 0 
    // str1 is less than str2 
    // equal to 0 
    // str1 is equal to str2 
    // greater than 0 
    // str1 is greater than str2 
    
   //  char *strcpy( char *to, const char *from );
   // 功能:复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。


    // char *strerror( int num );
    //功能:函数返回一个被定义的与某错误代码相关的错误信息。  文件描述符fd


    //char *strncat( char *str1, const char *str2, size_t count );
    //功能:将字符串str2中至多count个字符连接到字符串str1中,追加空值结束符。返回处理完成的字符串。




    // int strncmp( const char *str1, const char *str2, size_t count );
    // 功能:比较字符串str1 和 str2中至多count个字符。返回值如下:
    // 返回值 
    // 解释 
    // less than 0 
    // str1 is less than str2 
    // equal to 0 
    // str1 is equal to str2 
    // greater than 0 
    // str1 is greater than str2
    // 如果参数中任一字符串长度小于count, 那么当比较到第一个空值结束符时,就结束处理。




    //char *strncpy( char *to, const char *from, size_t count );
    //功能:将字符串from 中至多count个字符复制到字符串to中。如果字符串from 的长度小于count,其余部分用'\0'填补。
    //返回处理完成的字符串。


    //char *strpbrk( const char *str1, const char *str2 );
    //功能:函数返回一个指针,它指向字符串str2中任意字符在字符串str1 首次出现的位置,如果不存在返回NULL。


    //char *strrchr( const char *str, int ch );
    //功能:函数返回一个指针,它指向字符ch 在字符串str末次出现的位置,如果匹配失败,返回NULL。


    // char *strstr( const char *str1, const char *str2 );
    //功能:函数返回一个指针,它指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL。
    char bufa[60]="sfhh;hh;hha;sfh";
    char * mnt = strstr(bufa, "sf");
    cout<<"mnt="<<mnt<<endl;
    for(int i=0; i<3;i++)
    {
        cout<<mnt[i]<<endl;
    }




     //char *strtok( char *str1, const char *str2 );
    //功能:函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。
    //如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1 指向作为标记的分隔符。
    //之后所以的调用str1 都应为NULL。   最为常用   jfj; fsj ; jsdhfj ;  返回;前的字符串  第一个参数str  第二个开始NULL


    //int tolower( int ch );
    //功能:函数字符ch的小写形式。


    //int toupper( int ch );
    //功能:函数字符ch的大写形式。
    ret =toupper('A');
    cout<<"toupper="<<ret<<endl;


    // size_t strxfrm( char *str1, const char *str2, size_t num );
    //功能:函数将字符串str2 的前num 个字符存储到字符串str1中。
    
    return 0;
}

【20】源码执行结果

PS C:\Users\Administrator\Desktop\C语言函数集合> g++ .\标准c字符和字符串.cpp
PS C:\Users\Administrator\Desktop\C语言函数集合> ./a
atof结果ret =123.34
atoi的结果=222
atol的结果=-122
isalnum()返回值=4
You entered character
isdiget函数的返回值=1
You entered the digit
islower返回值是=1
是小写字母a
upper返回值是=1
是小写字母A
请输入字符判断是否可打印:3
isprintf函数是可打印的
Found an  X
第一个 小于 第二个
buffer zise =100
拷贝的值=djsfldsjfksjfskj
buf=djsfldsjfksjfskj
mnt=sfhh;hh;hha;sfh
s
f
h
toupper=65
PS C:\Users\Administrator\Desktop\C语言函数集合>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mipmap的作用以及其优势和缺点

Mipmap的作用以及其优势和缺点 定义 Mipmap,又叫做多级渐进贴图纹理映射,作用在游戏的纹理贴图,根据渲染物体距离相机的远近,选用不同大小的纹理贴图; 作用 可以使得远处的像素不发生闪烁;减小带宽;减小带宽的原理 说到MipMap可能很多人都会觉得,只是开启后会增加内…

Vue3 学习笔记 —— 函数式编程、createVNode、render、h 函数

目录 2. createVNode()、render() 2.1 初步使用 createVNode()、render() 2.2 h 函数源码分析 3. 使用 h 函数的几种方法 3.1 h 函数 接收的参数 3.2 h 函数 使用方法 4. 通过 h 函数实现 button 组件 4.1 使用 props 接收传入组件的参数 4.2 使用 emit 向组件外发送事…

自动化运维工具—Ansible概述及命令行模块

一.自动化运维工具—Ansible概述及命令行模块 1.1 Ansible是什么 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

机器人手臂四旋翼的笛卡尔阻抗控制(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 当机器人手指与障碍物接触时,呈现出2阶机械阻抗特性。在阻抗控制算法中,不需直接计算加速度,从而避免了因大加速度误差给控制带…

leetcode 473. 火柴拼正方形-思路整理与细节分析

题目&#xff1a; 你将得到一个整数数组matchsticks&#xff0c;其中 matchsticks[i]是第i个火柴棒的长度。你要用所有的火柴棍拼成一个正方形。你不能折断任何一根火柴棒&#xff0c;但你可以把它们连在一起&#xff0c;而且每根火柴棒必须使用一次。如果你能使这个正方形&am…

FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真)

文章目录一、简介1.1 前仿真1.2 后仿真二、联合仿真2.1 选择modesim的安装路径2.2 设置选择eda的工具2.3 test bench文件2.4 打开test bench文件2.5 给系统时钟和复位信号赋初值2.6 配置仿真功能三、RTL仿真3.1 打开波形窗口3.2添加内部信号四、时序仿真一、简介 1.1 前仿真 主…

web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

web期末大作业 用HTML+CSS做一个漂亮简单的节日网页【传日文化节日中秋节】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

web前端期末大作业—— HTML+CSS豪华车 (9页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

蚂蚁金服开源的这份SpringBoot笔记,曾在24小时内GitHub星标48k

前言 Spring的影响力想必就不用小编多说了&#xff0c;今天要跟大家说的是SpringBoot。Spring Boot作为目前Spring技术体系中炙手可热的框架之一&#xff0c;已经是开发者们的必备神器了。在实际的项目中&#xff0c;需要集成各种的插件支持&#xff0c;还有很多或许我们平时不…

【计算机考研408-计算机网络-教书匠视频笔记】主机访问浏览器的全部过程

主机H1利用浏览器通过该域名请求访问web服务器 由于题目给定主机H1的ARP表是空的 &#xff08;1&#xff09;主机H1首先会发送ARP请求报文&#xff0c;ARP请求报文会被封装在以太网的MAC帧中发送 ARP请求报文&#xff1a;FF-FF-FF-FF-FF-FF 源MAC地址&#xff1a;00-11-22-3…

Docker 容器使用

文章目录Docker 容器使用Docker 客户端运行一个web应用查看 WEB 应用容器网络端口的快捷方式查看WEB应用程序日志查看WEB应用程序容器的进程检查WEB应用程序停止WEB应用容器重启WEB应用容器移除WEB应用容器Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接…

全网显示 IP 归属地,用上这个开源库,实现也太简单了

细心的小伙伴可能会发现&#xff0c;最近蘑菇新上线了 IP 属地的功能&#xff0c;小伙伴在发表动态、发表评论以及聊天的时候&#xff0c;都会显示自己的 IP 属地信息 动态显示IP属地 在蘑菇群聊中&#xff0c;也 可 以 展 示 IP 属 地&#xff0c;下面是小伙伴们在交流群中显…

【强化学习论文合集】十八.2019国际表征学习大会论文(ICLR2019)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

面试官:你觉得你最大的缺点是什么?

面试官:你觉得你最大的缺点是什么? 前言 相信百分之80的同学们都会被问到这个问题&#xff1a;你觉得你最大的缺点是什么? 这也是求职者一个充满恐惧的问题&#xff0c;特别是我们程序员&#xff0c;大家在与人沟通并没有我们与代码沟通这么得心应手&#xff0c;如果你没回…

网络请求工具wget和curl

一. wget命令 wget命令来自于英文词组”web get“的缩写&#xff0c;其功能是用于从指定网址下载网络文件。 wget命令支持如HTTP、HTTPS、FTP等常见协议&#xff0c;可以在命令行中直接下载网络文件。 注意&#xff1a;不同busybox版本集成的wget命令&#xff0c;可能不…

统计检验分析

1. 正态分布检验 2. 统计检验 正态分布且方差齐非正态分布或方差不齐para test non-para testnon-pairedpaired2组 t-testWilcoxon rank-sum testWilcoxon signed-rank test3组及以上One way ANOVA Kruskal-Wallis testt-test: Paired t-test: 确定某个总体的成对测量值之间…

说说WM_DESTROY和WM_NCDESTROY的区别

在一个 Windows 窗口被销毁的时候&#xff0c;你会发现有两个比较类似的消息&#xff1a;WM_DESTROY和WM_NCDESTROY&#xff0c;那么&#xff0c;这俩兄弟之间有什么区别呢&#xff1f;今天就来讲讲。 不同之处在于&#xff0c;WM_DESTROY消息在窗口销毁序列的开头发送&#x…

MySQL执行计划误选索引及修改方案

MySQL的优化器 MySQL在执行查询语句时使用那个索引是由server层的优化器决定的。优化器的作用是找到一个最优的执行方案&#xff0c;用最小的代价去执行语句。由于MySQL使用预估的方式去选择索引&#xff0c;所以MySQL可能会出现选择索引出错的情况&#xff0c;无法命中最优索…

刘韧工作手册(2023年版)

刘韧于2022年9月22日为云算科技做内部演讲。由谭缘整理成文&#xff0c;李欣欣编辑&#xff0c;朱芳文审定。一、认知篇01 干中学&#xff0c;重复做。“学”是为了“习”&#xff0c;学到的东西是为了下一次习的时候&#xff0c;做得更好。“习”&#xff0c;是最终实践的成果…