C <string.h>常用函数介绍
2018-01-07 17:17
831 查看
1. strcpy
char *strcpy(char *destin, char *source);
功能:将source指向的字符串拷到destin。
int main() { char dest[5]; char *src="123456"; strcpy(dest, src); printf("dest= %s, %s, %s", dest, dest+4, dest+5); return 0; }
从结果可知确实将src的内容复制过去了,但是全部复制导致dest满了,使用不当就会出错!
2. strncpy
char *strncpy(char *destin, char *source, int len);
功能:将source指向的len个字符串拷到destin。
int main() { char dest[5]; char *src="123456"; strncpy(dest, src, 3); dest[3]= '\0'; printf("dest= %s, %s, %s", dest, dest+4, dest+5); return 0; }
结果可知加上‘\0’结束符后dest内容变的更安全,strcpy和strncpy要额外加字符结束符!
3. strcat
char* strcat(char * str1,char * str2);
功能: 把字符串str2接到str1后面,str1最后的'\0'被取消
int main() { char dest[5]="abcd"; char *src="123456"; strcat(dest, src); printf("dest= %s", dest); return 0; }
4. strncat
char *strncat(char *dest, const char *src, size_t maxlen)
功能: 将字符串src中前maxlen个字符连接到dest中
int main() { char dest[10]="abcd"; char *src="123456"; strncat(dest, src, 8); printf("dest= %s", dest); return 0; }
与strncpy不同,strncat会自动在末尾加‘\0’,若指定长度超过源字符串长度,则只复制源字符串长度即停止,更安全!
5. strcmp
int strcmp(char * str1,char * str2);
功能: 比较两个字符串str1,str2
返回: str1<str2,返回负数;str1=str2,返回 0;str1>str2,返回正数
int main() { char dest[10]="abcd"; char *src="a23456"; char d2[8]="abcd"; int res; res=strcmp(dest, src); printf("res= %d \n", res); res=strcmp(dest, d2); printf("res= %d \n", res); return 0; }
结果可知每一位都要比较,且与原字符数组长度无关。
6. strncmp
int strncmp(char *str1,char *str2,int count)
功能: 对str1和str2中的前count个字符按字典顺序比较
返回: 小于0:str1<str2,等于0:str1=str2,大于0:str1>str2
int main() { char dest[10]="abcd"; char *src="a23456"; char d2[8]="abcd"; int res; res=strncmp(dest, src, 1); printf("res= %d \n", res); res=strncmp(dest, d2, 1); printf("res= %d \n", res); return 0; }
7. strchr
char* strchr(char* str,char ch);
功能: 找出str指向的字符串中第一次出现字符ch的位置
返回: 返回指向该位置的指针,如找不到,则返回空指针
int main() { char dest[10]="abcd"; char* rp; char ch= 'c'; rp=strchr(dest, ch); if(NULL == rp) printf("no %c exist", ch); else printf("pos of %c is %d", ch, (int)(rp-dest+1)); return 0; }
8. strrchr
char *strrchr(const char *s, int c)
功能: 得到字符串s中最后一个含有c字符的位置指针
返回: 位置指针
int main() { char dest[10]="abcdabc"; char* rp; char ch= 'c'; rp=strrchr(dest, ch); if(NULL == rp) printf("no %c exist", ch); else printf("pos of %c is %d", ch, (int)(rp-dest+1)); return 0; }
strrchr 比strchr多的 r 意指反向寻找,位置都是从1开始计数(非从0开始)
9. strstr
char* strstr(char* str1,char* str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)
返回: 返回该位置的指针,如找不到,返回空指针
int main() { char dest[10]="abcdabc"; char* rp; char ch1[]= "c"; char str2[]= "cda"; rp=strstr(dest, ch1); if(NULL == rp) printf("no %s exist", ch1); else printf("substring is %s \n", rp); rp=strstr(dest, str2); if(NULL == rp) printf("no %s exist", str2); else printf("substring is %s ", rp); return 0; }
可以找单个字符串(字符不符合参数要求)
10. strnset
char *strnset(char *s, int ch, size_t n)
功能: 将字符串s中前n个字符设置为ch的值
返回: 指向s的指针
int main() { char dest[10]="abcdabc"; char* rp; char ch= 'F'; rp=strnset(dest, ch, 4); printf("after strnset dest is %s \n", rp); return 0; }
11. strset
char *strset(char *s, int ch)
功能: 将字符串s中所有字符设置为ch的值
返回: 指向s的指针
int main() { char dest[10]="abcdabc"; char* rp; char ch= 'F'; rp=strset(dest, ch); printf("after strnset dest is %s \n", rp); printf("after strnset dest is %s \n", dest); return 0; }
结果的 rp和dest 都被修改为同一内容!
12. strtok
char *strtok(char *s1, const char *s2)
功能:分解s1字符串,用特定分隔符(s2)分隔成多个字符串
返回: 字符串s1中首次出现s2中的字符前的子字符串指针
strtok()在参数s1的字符串中发现参数s2中包涵的分割字符时,则会将该字符改为\0字符。在第一次调用时,strtok()必需给予参数s1字符串,往后的调用则将参数s1设置成 NULL。每次调用成功则返回指向被分割出片段的指针。
int main() { char dest[]="ab,cd,ef,c"; char* rp; char ch[]= ","; rp=strtok(dest, ch); while(NULL != rp) { printf("dest: %s ", dest); printf("rp: %s \n", rp); rp=strtok(NULL, ch); } return 0; }
说明:尽量使用可重入版的strtok,Windows平台下为strtok_s,Linux平台下为strtok_r。
牢记strtok函数族的分隔规则:忽略字符串前后的分隔符,连续的分隔符被当做一个处理。
在使用strtok前,请对源字符串进行备份,除非你可以接受字符串被修改这一事实(修改为分隔的第一个字符串)。
13. strupr
char *strupr(char *s)
功能: 将字符串s中的字符变为大写
int main() { char dest[]="ab,cd,EF,c"; char* rp; rp=strupr(dest); printf("dest: %s, rp: %s", dest, rp); return 0; }
原字符串dest 也被修改!!,对符号和大写字符无影响。
char *strlwr(char *s)与它相反,将字符串中的字符变为小写字符
还有一些 memxxx() 函数下次单独说明,有问题欢迎评论~~
相关文章推荐
- c++中string常用函数整理<引用>
- c++ <string.h>中包括哪些常用函数
- C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
- C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
- Vertica的这些事<五>—— 关于vertica常用函数介绍(持续更新ing)
- Mybatis学习之路之Oracle增删改查以及常用函数<二>
- <string>函数库中的getline函数
- 第一篇 OpenCv常用头文件#include<>介绍
- js数租,对象, 数组,字符串,函数,变量,int与String 型转化,String 转化为js 中内部代码,编码格式转化,<a>标签的死链接
- stl之string 常用函数 介绍
- Javascript Math 中常用函数<一>--ceil(),floor(),round()
- 1#include<stdio.h> #include<string.h> int deng(char a[],ch、用函数实现登陆功能(三次机会),然后在主函数中根据调用后的结果判断 登陆成功与否。
- C/C++中常用库函数-<string.h>
- #include <algorithm> 常用函数
- c语言字符串库函数#include<string.h>
- Delphi-IOCP学习笔记<二>====IOCP基本函数介绍和理解
- ThinkPHP 学习笔记<一>:ThinkPHP常用函数说明
- C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
- python中multiprocessing.pool函数介绍<转>
- string<C++标准库>的函数