一、介绍

本文将主要介绍字符串处理库函数中的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语言中的字符串处理库函数介绍与实现的更多相关文章

  1. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  2. C语言中返回字符串函数的四种实现方法

    转自C语言中返回字符串函数的四种实现方法 其实就是要返回一个有效的指针,尾部变量退出后就无效了. 有四种方式: 1.使用堆空间,返回申请的堆地址,注意释放 2.函数参数传递指针,返回该指针 3.返回函 ...

  3. C语言中格式字符串

    C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项. 一.类型 我们用一定的字符用以表示输出数据的类型,其格式符和意义下表所示: 字符  ...

  4. C语言中求字符串的长度

    在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...

  5. C语言中以字符串形式输出枚举变量

    C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 h ...

  6. R语言中的字符串处理函数

    内容概览   尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量.   R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...

  7. C语言中的字符串

    字符串 字符串 用双引号引起来的多个字符. 在C语言中字符串是用’\0’结束的.即每个字符串的最后一个字符是’\0’,但是结束符不显示,仅仅标志该字符串到这儿就结束了. 二.声明字符串 char *s ...

  8. Python中str字符串的功能介绍

    Str字符串的功能介绍 1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + st ...

  9. Go语言中的字符串处理

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(“”)或反 ...

随机推荐

  1. CF 1131 E. String Multiplication

    E. String Multiplication 题意 分析: 从后往前考虑字符串变成什么样子. 设$S_i = p_1 \cdot p_2 \dots p_{i}$,最后一定是$S_{n - 1} ...

  2. hihoCoder.1509.异或排序(位运算 思路)

    题目链接 \(Description\) 给定长为\(n\)的序列\(A\).求有多少\(S\),满足\(0\leq S<2^{60}\),且对于所有\(i\in[1,n-1]\),\(a[i] ...

  3. POJ.3537.Crosses and Crosses(博弈论 Multi-SG)

    题目链接 \(Description\) 有一个一行n列的棋盘,每个人每次往上放一个棋子,将三个棋子连在一起的人赢.问是否有必胜策略. \(Solution\) 首先一个人若在\(i\)处放棋子,那么 ...

  4. CAD画图技巧经验

    1.CAD中如何输入特殊符号 %% d ——绘制“℃”符号.例如: 98.6 ℃—— 98.6 %% dC : %% c ——绘制圆直径“φ”符号.例如:φ 30 ——%% c30 : %% p —— ...

  5. 乐迪AT9

    AT9使用说明书.pdf https://wenku.baidu.com/view/c17e85ea2f60ddccda38a0fc.html?re=view 乐迪AT9遥控器的基础使用方法第一课视频 ...

  6. [CC-PERMUTE]Just Some Permutations 3

    [CC-PERMUTE]Just Some Permutations 3 题目大意: \(T(T\le10^5)\)次询问,每次询问有多少长度为\(n(n\le10^6)\)的排列,满足任意相邻两个数 ...

  7. Android的onLayout、layout方法讲解

    onLayout方法是ViewGroup中子View的布局方法,用于放置子View的位置.放置子View很简单,只需在重写onLayout方法,然后获取子View的实例,调用子View的layout方 ...

  8. centos7 重置root 密码

    重置Centos 7 Root密码的方式和Centos 6完全不同.让我来展示一下到底如何操作. 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linu ...

  9. CocosCreator小栗子

    主要是了解了场景切换的API,见下: 开始场景和结束场景内,按钮挂相同的Btn脚本,主要是切换到场景2中: Btn脚本如下, onLoad:function() { this.node.on('mou ...

  10. css3 flex布局结合transform生成一个3D骰子

    预览地址: https://zhaohh.github.io/flex-dice/index.html 1 Flex 布局 首先聊聊Flex 布局,Flex 布局又称"弹性布局", ...