C语言str-xxx字符串库函数处理大全【超详细】
C语言str系列库函数在面试中经常容易被面试官喊在纸上写某一个函数的实现,库函数的实现包含在头文件<string.h>中,有如下方法
1 strcpy
#include <string.h>
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷贝到字符串str1当中,并返回str1。
2 strncpy
#include <string.h>
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count个字符拷贝到字符串str1中,并返回str1。如果str2中少于count个字符,那么就用'\0'来填充,直到满足count个字符为止。
3 strcat
#include <string.h>
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷贝到str1的尾部(连接),并返回str1。其中终止原str1的'\0'被str2的第一个字符覆盖。
4 strncat
#include <string.h>
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count个字符连接到str1的尾部,并以'\0'终止str1,返回str1。其中终止原str1的'\0'被str2的第一个字符覆盖。
注意,最大拷贝字符数是count+1。
5 strcmp
#include <string.h>
int strcmp(const char *str1, const char *str2);
按字典顺序比较两个字符串,返回整数值的意义如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
6 strncmp
#include <string.h>
int strncmp(const char *str1, const char *str2, size_t count);
同strcmp,除了最多比较count个字符。根据比较结果返回的整数值如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
7 strchr
#include <string.h>
char *strchr(const char *str, int ch);
返回指向字符串str中字符ch第一次出现的位置的指针,如果str中不包含ch,则返回NULL。
8 strrchr
#include <string.h>
char *strrchr(const char *str, int ch);
返回指向字符串str中字符ch最后一次出现的位置的指针,如果str中不包含ch,则返回NULL。
9 strspn
#include <string.h>
size_t strspn(const char *str1, const char *str2);
返回字符串str1中由字符串str2中字符构成的第一个子串的长度。
10 strcspn
#include <string.h>
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符构成的第一个子串的长度。
11 strpbrk
#include <string.h>
char *strpbrk(const char *str1, const char *str2);
返回指向字符串str2中的任意字符第一次出现在字符串str1中的位置的指针;如果str1中没有与str2相同的字符,那么返回NULL。
12 strstr
#include <string.h>
char *strstr(const char *str1, const char *str2);
返回指向字符串str2第一次出现在字符串str1中的位置的指针;如果str1中不包含str2,则返回NULL。
13 strlen
#include <string.h>
size_t strlen(const char *str);
返回字符串str的长度,'\0'不算在内。
14 strerror
#include <string.h>
char *strerror(int errnum);
返回指向与错误序号errnum对应的错误信息字符串的指针(错误信息的具体内容依赖于实现)。
15 strtok
#include <string.h>
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的单词。
对strtok()的一系列调用将把字符串str1分成许多单词,这些单词以str2中的字符为分界符。第一次调用时str1非空,它搜索str1,找出由非str2中的字符组成的第一个单词,将str1中的下一个字符替换为'\0',并返回指向单词的指针。随后的每次strtok()调用(参数str1用NULL代替),均从前一次结束的位置之后开始,返回下一个由非str2中的字符组成的单词。当str1中没有这样的单词时返回NULL。每次调用时字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {p = strtok("\0", ", "); /* 此处str2是逗号和空格 */if (p)printf("|%s", p);
} while (p);
显示结果是:The | summer | soldier | the | sunshine | patriot
16 memcpy
#include <string.h>
void *memcpy(void *to, const void *from, size_t count);
把from中的count个字符拷贝到to中。并返回to。
17 memmove
#include <string.h>
void *memmove(void *to, const void *from, size_t count);
功能与memcpy类似,不同之处在于,当发生对象重叠时,函数仍能正确执行。
18 memcmp
#include <string.h>
int memcmp(const void *buf1, const void *buf2, size_t count);
比较buf1和buf2的前count个字符,返回值与strcmp的返回值相同。
19 memchr
#include <string.h>
void *memchr(const void *buffer, int ch, size_t count);
返回指向ch在buffer中第一次出现的位置指针,如果在buffer的前count个字符当中找不到匹配,则返回NULL。
20 memset
#include <string.h>
void *memset(void *buf, int ch, size_t count);
把buf中的前count个字符替换为ch,并返回buf。
21 数字转换为字符串
包含在头文件: #include <
stdlib.h>
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
21 字符串转换为数字
包含在头文件: #include <
stdlib.h>
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
22 字符处理函数
包含在头文件: #include <
ctype.h>
int isalpha(c) | c是字母字符 |
---|---|
int isdigit(c) | c是数字字符 |
int isalnum(c) | c是字母或数字字符 |
int isspace(c) | c是空格、制表符、换行符 |
int isupper(c) | c是大写字母 |
int islower(c) | c是小写字母 |
int iscntrl(c) | c是控制字符 |
int isprint(c) | c是可打印字符,包括空格 |
int isgraph(c) | c是可打印字符,不包括空格 |
int isxdigit(c) | c是十六进制数字字符 |
int ispunct(c) | c是标点符号 |
int tolower(int c) | 当c是大写字母时返回对应小写字母,否则返回c本身 |
int toupper(int c) | 当c是小写字母时返回对应大写字母,否则返回c本身 |
注:条件成立时这些函数返回非0值。
ps:增加数学函数:
包含在头文件: #include <
math.h>
三角函数:
三角函数 | sin | cos | tan |
---|---|---|---|
反三角函数 | asin | acos | atan |
双曲函数 | sinh | cosh | tanh |
指数和对数函数:
以e为底的指数函数 | exp |
---|---|
自然对数函数 | log |
以10为底的对数函数 | log10 |
其他函数:
平方根 | sqrt |
---|---|
绝对值 | fabs |
乘幂,第一个参数作为底,第二个是指数 | double pow(double, double) |
实数的余数,两个参数分别是被除数和除数 | double fmod(double, double) |
下面函数返回双精度值(包括函数ceil和floor)。在下表里,除其中有特别说明的参数之外,所有函数的其他参数都是double类型。
函数原型 | 意义解释 |
---|---|
ceil(x) | 求出不小于x的最小整数(返回与这个整数对应的double值) |
floor(x) | 求出不大于x的最大整数(返回与这个整数对应的double值) |
atan2(y, x) | 求出 tan-1(y/x),其值的范围是[-pai,pai] |
ldexp(x, int n) | 求出x*2n |
frexp(x, int *exp) | 把 x分解为 y2n, 是位于区间 [1/2,1)里的一个小数,作为函数结果返回,整数n 通过指针exp返回(应提供一个int变量地址)。当x 为0时这两个结果的值都是0 |
modf(x, double*ip) | 把x分解为小数部分和整数部分,小数部分作为函数返回值,整数部分通过指针*ip返回。 |
C语言str-xxx字符串库函数处理大全【超详细】相关推荐
- c++ 字符串连接_C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, ...
- c语言1066字符分类统计,C语言字符串操作总结大全(超详细)
1)字符串操作strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字 ...
- C语言字符串操作总结大全(超详细)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- c语言有关字符的操作,C语言字符操作总结大全(超详细).doc
C语言字符串操作总结大全(超详细) 作者: 本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n ...
- HTML学习知识点大全-----超详细(各种标签使用讲解及案例)
HTML学习知识点大全-----超详细(各种标签使用讲解及案例) 1:概念 **最基础的网页开发语言 *Hyper Text Markup language:超文本标记语言超文本:运用了超链接的方法, ...
- java面试题答案大全超详细(持续更新)
java面试题答案大全超详细 第01章 java语言面试题 项目经理(作者):张明星 JVM 运行时数据区是什么? 程序计数器是什么? 程序计数器(线程私有) Java 虚拟机栈的作用? 本地方法栈的 ...
- 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析
之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...
- c语言的一些字符串库函数的自己实现
c语言字符串函数的实现 strlen函数 方法一: #include<iostream> #include<assert.h>using namespace std;int m ...
- C语言函数操作大全----(超详细)
fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const ...
最新文章
- C#进阶系列——WebApi 接口参数不再困惑:传参详解
- python tcp协议加代理_python实现简单的TCP代理服务器
- linux tar cvf_Linux中的Tar命令:Tar CVF和Tar XVF通过示例命令进行了解释
- linux命令history作用,Linux命令:history命令历史的管理及用法
- RSA的加解密过程--(转自CSDN,学习用)
- java的环境变量设置_Java开发环境不再需要配置classpath
- cefsharp异步抓取html5,winform插件cefsharp65最新版完美demo,完美flash、html5、和调用摄像头支持,部署就能用...
- linux系统文件系统个目录介绍,关于linux的文件系统目录详细介绍
- 实时环境映射贴图(Real-time Evironmnet Mapping)
- win10文件拷贝错误 0x80070079: 信号灯超时时间已到 解决方法
- 基于Web的爬虫系统设计与实现
- 针对高通BMS的研究 高通电量计
- 【shell】shel脚本开发-条件测试
- 谷歌浏览器无法使用翻译功能的解决方案,谷歌浏览器无法翻译怎么办?谷歌浏览器右键翻译失效了?
- ngx-bootstrap学习笔记
- SQL注入原理及联合查询
- 常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别
- python 人脸识别库儿童_GitHub - f02/face_collection: python的face_recognition人脸识别库的使用...
- H264_Lite高清视频编码器/解码器IP核(FPGA/ASIC通用)
- 【安防百科】视频监控中常用的分辨率
热门文章
- 深入理解Java虚拟机-第六章 类文件结构
- 利用Kali自带的Aircarck-ng工具包 渗透 wap/wap2加密模式的无线WIFI,超详细。(Aircrack-ng跑字典(pojie)全过程)2020.1
- linux有哪些容器技术,Linux容器技术和docker
- 李嘉诚:五十年不败秘诀九○%时间先想失败
- 【布里渊现象】光纤布里渊温度和应变分布同时测量系统研究
- 基于云计算的通讯录产品设计
- Cannot find module ‘@babel/compat-data/corejs3-shipped-proposals‘
- flask实现邮箱发送
- 规格组件-SKUSPU
- c语言差分qpsk编码信道估计 pudn,请教一下OFDM中的信道估计