C语言中的字符串处理库函数介绍与实现
一、介绍
本文将主要介绍字符串处理库函数中的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 = ;
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 ;
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 ; //相等
if(*s1) return ; //s1 > s2 return -; //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[];
printf("请输入字符串:");
scanf("%s",str); printf("转换为整数后为%d。\n",atoi(str));
return ;
}
C语言中的字符串处理库函数介绍与实现的更多相关文章
- C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏
C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...
- C语言中返回字符串函数的四种实现方法
转自C语言中返回字符串函数的四种实现方法 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 有四种方式: 1.使用堆空间,返回申请的堆地址,注意释放 2.函数参数传递指针,返回该指针 3.返回函 ...
- C语言中格式字符串
C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项. 一.类型 我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示: 字符 ...
- C语言中求字符串的长度
在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...
- C语言中以字符串形式输出枚举变量
C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 h ...
- R语言中的字符串处理函数
内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量. R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...
- C语言中的字符串
字符串 字符串 用双引号引起来的多个字符. 在C语言中字符串是用’\0’结束的.即每个字符串的最后一个字符是’\0’,但是结束符不显示,仅仅标志该字符串到这儿就结束了. 二.声明字符串 char *s ...
- Python中str字符串的功能介绍
Str字符串的功能介绍 1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + st ...
- Go语言中的字符串处理
1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(“”)或反 ...
随机推荐
- Java并发程序设计(三) Java内存模型和线程安全
Java内存模型和线程安全 一 .原子性 原子性是指一个操作是不可中断的.即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰. 思考:i++是原子操作吗? 二.有序性 Java代 ...
- Mysql数据库小结
1. 基础概念 1.1 数据 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事 ...
- CocosCreator项目结构
1,通过 Dashboard,我们可以创建一个 Hello World 项目作为开始,创建之后的项目有特定的文件夹结构.[参考来源:官方文档] 2,初次创建并打开一个 Cocos Creator 项目 ...
- Github如何回退/回滚到某个版本
当然你可以直接在命令行使用 git reset --hard <commit ID号> 或者 git reset --hard HEAD^来进行回退
- 你真的会用Gson吗?Gson使用指南(2)
注:此系列基于Gson 2.4. 上一篇文章 你真的会用Gson吗?Gson使用指南(1) 我们了解了Gson的基础用法,这次我们继续深入了解Gson的使用方法. 本次的主要内容: Gson的流式反序 ...
- .hashCode方法的作用
对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode.在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet.Hash ...
- boost.xml_parser中文字符问题 (转)
当使用xml_parser进行读xml时,如果遇到中文字符会出现解析错误. 网上有解决方案说使用wptree来实现,但当使用wptree来写xml时也会出错.而使用ptree来写中文时不会出错. 综合 ...
- .NET Core修改监听端口
把Program.cs加一行UseUrls代码如下: using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.AspN ...
- IE10、IE11使用 __doPostBack 出现未定义问题
在公司的老项目中分页控件使用了 __doPostBack 方式,在IE兼容模式下正常,在IE10.IE11中 __doPostBack 出现未定义问题. 百度查阅资料得知,这是微软NET环境下的一个B ...
- MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Sum, Aggregate, Avg
开篇介绍 SSAS 分析服务中记录了大量的聚合值,这些聚合值在 Cube 中实际上指的就是度量值.一个给定的度量值可能聚合了来自事实表中上千上万甚至百万条数据,因此在设计阶段我们所能看到的度量实际上就 ...