(C语言)常见字符函数和字符串函数

(C语言)常见字符函数和字符串函数我们都知道 在 C 语言里有 string h 这个头文件 但是 C 语言里没有 string 这个类型 字符串通常放在常量字符串中或者字符数组中 字符串常量适用于那些对她不做修改的字符串函数 string h 这个头文件里声明的函数原型也全是针对 char 数组的种种操作 直到 C 中才出现了 string 这个类这篇文章就简单整理一下 C 语言中处理字符 字符串的库函数 strlensize

这篇文章就简单整理一下C语言中处理字符、字符串的库函数。

strlen

 size_t strlen( const char* str)
  • strlen() 函数计算的是字符串的实际长度,遇到第一个’\0’结束;
  • 参数指向的字符串必须以 ’ \0 ‘结束
  • 函数返回值一定是size_t ,是无符号的
  • 如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止
  • sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数

strcpy

char* strcpy(char* dest,char* src)
  • 源字符串必须以’\0’结束
  • 会将源字符串的’\0’拷贝到目标空间
  • 目标空间必须可变
  • 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代

strncpy

char* strncpy(char* dest,const char* src,size_t num)
  • 如果src字符串长度小于num,则拷贝完字符串后,在目标后追加0,直到num个
  • strncpy不会向dest追加’\0’
  • src和dest所指的内存区域不能重叠,且dest必须有足够的空间放置n个字符

strcat

char* strcat(char* dest,const char* src)

源字符串必须’\0’结束
– 目标空间必须可修改
– strcat() 会将参数src字符串复制到参数dest所指的字符串尾部
dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
– dest与src所指的内存空间不能重叠,且dest要有足够的空间来容纳要复制的字符串








strncat

char* strncat (char* dest,const char* src,size_t num)
  • strncat将会从字符串src的开头拷贝n个字符到dest字符串尾部
  • dest要有足够的空间来容纳要拷贝的字符串
  • 如果n大于字符串src的长度,那么仅将src全部追加到dest的尾部
  • strncat会将dest字符串最后的’\0’覆盖掉,字符追加完成后,再追加’\0’

strcmp

int strcmp (const char* str1,const char* str2)
  • 判断两个字符串大小1)ASII码 2)长度
  • 区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数

strncmp

int strncmp(const char* str1,const char* str2,size_t num)

strstr

strchr

char* strchr(const char* str,char c)

strrchr

char* strchr(const char* str,char c)

strspn

size_t strspn(const char* str1, const char* str2) 
  • 如果str所包含的字符都属于str2,那么返回str1的长度
  • 如果str的第一个字符不属于str2,那么返回0

strcspn

size_t strspn(const char* str1, const char* str2)

strtok

char* strtok(char* str,const char* sep)

strerror

char* strerror(int errnum) 
  • 必须包含头文件errno.h

strpbrk

char* strpbrk(const char* str1, const char* str2)

功能:在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内

atoi

int atoi(const char* str)
  • ANSI C规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul()共6个可以将字符串转换为数字的函数,可以对比学习
  • 另外在C99/C++11规范中又新增了5个函数,分别是atoll()、strtof()、strtold()、strtoll()、strtoull()

字符分类函数:

int isalnum(int c):检查字符是否为数字或字母;(0~9,a~z,A~Z) int isalpha(int c):检查字符是否为字母;(a~z, A~Z) int iscntrl(int c):检查字符是否为控制字符;(八进制000~037以及177的字符) int isdigit(int c):检查字符是否为十进制数字;(0~9) int isgraph(int c):检查字符是否为图形表示,依赖于使用语言的环境;0~9,a~z,A~Z,以及标点符号) int islower(int c):检查字符是否为小写的字母;(a~z) int isprint(int c):检查字符是否为可打印的;(数字、字母、标点符号、空白字符) int ispunct(int c):检查字符是否为标点符号;(! ” # $ % & ’ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~等)  int isspace(int c):检查字符是否为空白字符;(TAB、换行、垂直TAB、换页、回车、空格) int isupper(int c):检查字符是否为大写字母;(A~Z) int isxdigit(int c):检查字符是否为十六进制数字;(0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f) 

字符转换

int tolower(int c):转化字符为小写字母; int toupper(int c):转化字符为大写字母;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225974.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:07
下一篇 2026年3月17日 上午8:08


相关推荐

  • BatchMD5Modify_4F-MDMB-BUTINACA

    BatchMD5Modify_4F-MDMB-BUTINACA写前bb最早是看了matlab的代码,搭了环境,demo也跑了,就再也没碰过了。之后想自己把测试和训练部分全部跑通,找了个用pytorch写的代码,看的过程中发现自己还是很多细节部分不是很清楚。虽然文章写的很一笔带过,但是看着代码会发现还是很多疑问的。代码地址:gayhub代码的requirements:UbuntuPython2.7(useAnaconda2.*here)…

    2026年4月17日
    4
  • Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」

    Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」CCFCSP认证考试真题(201712-2):游戏问题描述解题思路参考答案测试用例小结问题描述试题编号: 201712-2试题名称: 游戏时间限制: 1.0s内存限制: 256.0MB问题描述  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。  游戏开始,从1…

    2025年9月1日
    9
  • 数字游戏13524_数位计数器

    数字游戏13524_数位计数器由于科协里最近真的很流行数字游戏。某人又命名了一种取模数,这种数字必须满足各位数字之和 mod N 为 0。现在大家又要玩游戏了,指定一个整数闭区间 [a.b],问这个区间内有多少个取模数。输入格式输入包含多组测试数据,每组数据占一行。每组数据包含三个整数 a,b,N。输出格式对于每个测试数据输出一行结果,表示区间内各位数字和 mod N 为 0 的数的个数。数据范围1≤a,b≤231−1,1≤N<100输入样例:1 19 9输出样例:2#include<bits

    2022年8月9日
    7
  • Java的Scanner输入时,next()和nextLine()的区别[通俗易懂]

    Java的Scanner输入时,next()和nextLine()的区别[通俗易懂]nextLine()不要和其他next方法一起用!!!尤其nextLine()不要放在它们后面!!!这个问题已经坑了我好多次了,但是每次都没有在意,主要是没反应过来出现问题的原因。今天阿里内推测验,又被nextLine()狠狠坑了一下。逻辑思路都是对的,就输入的数据不对。因为限时半小时,所以时间比较紧张,最后还是没弄出来。后来百度查了两者区别,果然问题是出在这里,改完之后问题就解决了。可怜我的…

    2022年6月10日
    44
  • C++文件读写详解(ofstream,ifstream,fstream)

    C++文件读写详解(ofstream,ifstream,fstream)在看 C 编程思想中 每个练习基本都是使用 ofstream ifstream fstream 以前粗略知道其用法和含义 在看了几位大牛的博文后 进行整理和总结 这里主要是讨论 fstream 的内容 includeofstr 文件写操作内存写入存储设备 ifstream 文件读操作 存储设备读区到内存中 fstrea

    2026年3月19日
    2
  • 解决PyCharm中的Manage Repositories为空

    解决PyCharm中的Manage Repositories为空当我们想要添加第三方库的时候发现库中是空的并且 ManageReposi 中添加的国内的镜像源也不会添加成功这时候我们只需要把这个点掉就可以添加 url 和第三方库了

    2026年3月27日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号