C <string.h>常用函数介绍
1. strcpy
char *strcpy(char *destin, char *source);
功能:将source指向的字符串拷到destin。
int main()
{ char dest[];
char *src="";
strcpy(dest, src);
printf("dest= %s, %s, %s", dest, dest+, dest+); return ;
}

从结果可知确实将src的内容复制过去了,但是全部复制导致dest满了,使用不当就会出错!
2. strncpy
char *strncpy(char *destin, char *source, int len);
功能:将source指向的len个字符串拷到destin。
int main()
{ char dest[];
char *src="";
strncpy(dest, src, );
dest[]= '\0';
printf("dest= %s, %s, %s", dest, dest+, dest+); return ;
}

结果可知加上‘\0’结束符后dest内容变的更安全,strcpy和strncpy要额外加字符结束符!
3. strcat
char* strcat(char * str1,char * str2);
功能: 把字符串str2接到str1后面,str1最后的'\0'被取消
int main()
{ char dest[]="abcd";
char *src="";
strcat(dest, src);
printf("dest= %s", dest); return ;
}

4. strncat
char *strncat(char *dest, const char *src, size_t maxlen)
功能: 将字符串src中前maxlen个字符连接到dest中
int main()
{ char dest[]="abcd";
char *src="";
strncat(dest, src, );
printf("dest= %s", dest); return ;
}

与strncpy不同,strncat会自动在末尾加‘\0’,若指定长度超过源字符串长度,则只复制源字符串长度即停止,更安全!
5. strcmp
int strcmp(char * str1,char * str2);
功能: 比较两个字符串str1,str2
返回: str1<str2,返回负数;str1=str2,返回 0;str1>str2,返回正数
int main()
{ char dest[]="abcd";
char *src="a23456";
char d2[]="abcd";
int res;
res=strcmp(dest, src);
printf("res= %d \n", res);
res=strcmp(dest, d2);
printf("res= %d \n", res); return ;
}

结果可知每一位都要比较,且与原字符数组长度无关。
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[]="abcd";
char *src="a23456";
char d2[]="abcd";
int res;
res=strncmp(dest, src, );
printf("res= %d \n", res);
res=strncmp(dest, d2, );
printf("res= %d \n", res); return ;
}

7. strchr
char* strchr(char* str,char ch);
功能: 找出str指向的字符串中第一次出现字符ch的位置
返回: 返回指向该位置的指针,如找不到,则返回空指针
int main()
{ char dest[]="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+)); return ;
}

8. strrchr
char *strrchr(const char *s, int c)
功能: 得到字符串s中最后一个含有c字符的位置指针
返回: 位置指针
int main()
{ char dest[]="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+)); return ;
}

strrchr 比strchr多的 r 意指反向寻找,位置都是从1开始计数(非从0开始)
9. strstr
char* strstr(char* str1,char* str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)
返回: 返回该位置的指针,如找不到,返回空指针
int main()
{ char dest[]="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 ;
}

可以找单个字符串(字符不符合参数要求)
10. strnset
char *strnset(char *s, int ch, size_t n)
功能: 将字符串s中前n个字符设置为ch的值
返回: 指向s的指针
int main()
{ char dest[]="abcdabc";
char* rp;
char ch= 'F';
rp=strnset(dest, ch, );
printf("after strnset dest is %s \n", rp); return ;
}

11. strset
char *strset(char *s, int ch)
功能: 将字符串s中所有字符设置为ch的值
返回: 指向s的指针
int main()
{ char dest[]="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 ;
}

结果的 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 ;
}

说明:尽量使用可重入版的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 ;
}

原字符串dest 也被修改!!,对符号和大写字符无影响。
char *strlwr(char *s)与它相反,将字符串中的字符变为小写字符
还有一些 memxxx() 函数下次单独说明,有问题欢迎评论~~
C <string.h>常用函数介绍的更多相关文章
- C string.h 常用函数
参考:http://womendu.iteye.com/blog/1218155 http://blog.csdn.net/zccst/article/details/4294565 还有一些,忘记了 ...
- C语言string.h常用函数总结
void *memcpy(void *dest, const void *src, size_t n); 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. ...
- MySQL常用函数介绍
MySQL常用函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作符介绍 1>.操作符优先级 mysql; +----------+ | +----------+ ...
- c++中string的常用函数说明
string可以说是是字符数组的升级版,使用更加啊方便,不容易出错.本文对string的常用函数进行简单介绍,做到会用即可. string中的常用函数分为四类,即赋值,添加,比较和删除. 一.赋值 1 ...
- go语言之进阶篇字符串操作常用函数介绍
下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr st ...
- [MFC美化] SkinMagic使用详解2- SkinMagic常用函数介绍
SkinMagic常用函数介绍 (1)InitSkinMagicLib函数:初始化SkinMagic int InitSkinMagicLib( //初始化SkinMagic工具库 HINSTANCE ...
- C++string类常用函数
C++string类常用函数 string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初 ...
- MySQL 常用函数介绍
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...
- Python数据分析--Numpy常用函数介绍(2)
摘要:本篇我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算,来学习NumPy的常用函数. ...
随机推荐
- vs widows服务的调试
1.使用.net 工具安装你开发好的服务 2.服务运行后在Vs中选择调试>附加到进程 4.选择安装好运行的服务,选择附加
- TCP详解——传输控制协议(总述)
初次熟读TCP,随着TCP的发展路线对他深入了解,真心觉得TCP协议的美妙之处.他比UDP这家伙更加可靠,深得我们信任.通过一个个英文简写,例如CRC.ARQ.RTT.ACK.SACK.DACK等,组 ...
- Nginx 入门指南
Nginx 入门指南 简介: Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强.本教程根据淘宝核心系统服务器平台组的 ...
- Linux下Shell去除空行的方法
1.用grep命令 grep -v “^$” 文件名 2.用sed命令 cat 文件名 | sed ‘/^$/d' 3.用awk命令 cat 文件名 | awk ‘{if($0!=”")pr ...
- jquery 遍历 json【转】
jquery 遍历 json <HTML> <HEAD> <meta http-equiv="content-Type" content=" ...
- json遍历 分别使用【原】
json遍历 一 使用org.json.JSONObject遍历 之后的所有遍历都参考了:http://blog.csdn.net/u010648555/article/details/4981538 ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- u-boot移植(十三)---代码修改---裁剪及环境变量 二
一.错误处理 上一节遇到一个错误: print一下: 发现我们在jz2440.h中静态写的网络参数都没有写进去. dm9000 address not set. dm9000的地址未设置. 这里对应两 ...
- ettercap插件介绍
利用sslstrip和ettercap突破ssl嗅探密码 ettercap之DNS欺骗--结合metasploit使用 ettercap支持在运行时加载模块.它们会自动地编译你的系统是否支持他们或者直 ...
- Pytorch中的squeeze()和unsqueeze()函数
在numpy库中,经常会出现“秩为1的一维数组”(come from 吴恩达的深度学习,目前还没有搞清楚numpy中如此设计的意图).比如: 注意这里的a的shape是[3] ,既不是 [1,3] 也 ...