C语言中的字符串处理库函数介绍与实现
2018-06-18 03:47:33来源:未知 阅读 ()
一、介绍
本文将主要介绍字符串处理库函数中的strlen、strcpy、strcat、strcmp、atoi等,主要由<string.h>头文件提供。
二、strlen函数:求字符串的长度
strlen |
|
头文件 |
#include<string.h> |
原型 |
size_t strlen(const char *s) |
说明 |
求出s指向的字符串的长度(不包括null字符)。 |
返回值 |
返回s指向的字符串的长度。 |
size_t strlen(const char *s) { size_t len = 0; while(*s++) len++; return len; }
二、strcpy和strncpy函数:复制字符串
strcpy |
|
头文件 |
#include<string.h> |
原型 |
char *strcpy(char *s1,const char *s2); |
说明 |
将s2指向的字符串复制到s1指向的数组中。若s1和s2指向的内存空间重叠,则作未定义处理。 |
返回值 |
返回s1的值。 |
strncpy |
|
头文件 |
#include<string.h> |
原型 |
char *strncpy(char *s1,const char *s2,size_t n); |
说明 |
将s2指向的字符串复制到s1指向的数组中。若s2的长度大于等于n,则复制到第n个字符为止。否则用null字符填充剩余部分。若s1和s2指向的内存空间重叠,则作未定义处理。 |
返回值 |
返回s1的值。 |
char *strcpy(char *s1,const char *s2) { char *tmp = s1; while(*s1++ = *s2++) ; return tmp; } char *strncpy(char *s1,const char *s2,size_t n) { char *tmp = s1; while(n){ if(!(*s1++ = *s2++)) break; //遇到'\0'就结束循环 n--; } while(n--) *s1++ = '\0'; //用'\0'填充剩余部分 return tmp; }
三、strcat和strncat函数:连接字符串
strcat |
|
头文件 |
#include<string.h> |
原型 |
char *strcat(char *s1,const char *s2) |
说明 |
将s2指向的字符串连接到s1指向的末尾。若s1和s2指向的内存空间重叠,则作未定义处理 |
返回值 |
返回s1的值。 |
strncat |
|
头文件 |
#include<string.h> |
原型 |
char *strncat(char *s1,const char *s2,size_t n); |
说明 |
将s2指向的字符串连接到s1指向的数组末尾。若s2的长度大于n则截断超出部分。若s1和s2指向的内存空间重叠,则作未定义处理。 |
返回值 |
返回s1的值。 |
char *strcat(char *s1,const char *s2) { char *tmp = s1; while(*s1) s1++; //前进到s1的末尾处 while(*s1++ = *s2++) ; //循环复制直至遇到s2中的'\0' return tmp; } char *strncat(char *s1,const char *s2,size_t n) { char *tmp = s1; while(*s1) s1++; //前进到s1的末尾处 while(n--) if(!(*s1++ = *s2++)) break; //遇到'\0'就结束循环 *s1 = '\0'; //在s1的末尾插入'\0' return tmp; }
四、strcmp和strncmp函数:比较字符串的大小关系
strcmp |
|
头文件 |
#include<string.h> |
原型 |
char *strcmp(char *s1,const char *s2) |
说明 |
比较s1指向的字符串和s2指向的字符串的大小关系。 |
返回值 |
若s1和s2相等,则返回0;若s1大于s2,则返回正整数值,反之返回负整数值。 |
strncmp |
|
头文件 |
#include<string.h> |
原型 |
char *strncat(char *s1,const char *s2,size_t n); |
说明 |
比较s1指向的字符的数组和s2指向的字符的数组的前n个字符的大小关系。 |
返回值 |
若s1和s2相等,则返回0;若s1大于s2,则返回正整数值,反之返回负整数值。 |
int *strcmp(char *s1,const char *s2) { while(*s1 == *s2){ if(*s1 == '\0') return 0; s1++; s2++; } return (unsigned char)*s1 - (unsigned char)*s2; } int *strncmp(char *s1,const char *s2,size_t n) { while(n && *s1 && *s2){ if(*s1 != *s2) return (unsigned char)*s1 - (unsigned char)*s2; s1++; s2++; n--; } if(!n) return 0; //相等 if(*s1) return 1; //s1 > s2 return -1; //s1 < s2 }
五、atoi、atol和atof函数:转换字符串
atoi |
|
头文件 |
#include<stdlib.h> |
原型 |
int atoi(const char *nptr) |
说明 |
将nptr指向的字符串转换为int型表示 |
返回值 |
返回转换后的值。结果值不能用int型表示时的处理未定义。 |
atol |
|
头文件 |
#include<stdlib.h> |
原型 |
long atol(const char *nptr) |
说明 |
将nptr指向的字符串转换为long型表示 |
返回值 |
返回转换后的值。结果值不能用long型表示时的处理未定义。 |
atof |
|
头文件 |
#include<stdlib.h> |
原型 |
double atof(const char *nptr) |
说明 |
将nptr指向的字符串转换为double型表示 |
返回值 |
返回转换后的值。结果值不能用double型表示时的处理未定义。 |
//使用atoi函数的例子 #include<stdio.h> #include<stdlib.h> int main(void) { char str[128]; printf("请输入字符串:"); scanf("%s",str); printf("转换为整数后为%d。\n",atoi(str)); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
- Z 字形变换 2020-04-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash