string.h 详解
string.h
简介
C语言标准库中一个常用的头文件,在使用到字符数组时需要使用。
函数简介
函数 | 功能简介 |
---|---|
memchr | 在内存块中定位字符的位置 |
memcmp | 把两个内存块的内容进行比较。 |
memcpy | 复制内存块的内容 |
memmove | 移动内存块中的内容 |
memset | 以字节方式填充内存块 |
strcat | 把一个字符串后追加到另一个字符串后 |
strchr | 在字符串中查找一个字符的第一个位置指针 |
strcmp | 比较两个字符串(ASCII) |
strcoll |
比较两个字符串(根据指定的 LC_COLLATE )
|
strcpy | 复制字符串 |
strcspn | 在一个字符串中查找另一个字符串中的第一个出现的字符的位置 |
strerror | 解释错误代码 |
strlen | 返回字符串长度 |
strncat | 把一个字符串的 n 个字符后追加到另一个字符串后 |
strncmp | 比较两个字符串的前 n 个字符(ASCII) |
strncpy | 复制字符串中的前 n 个字符 |
strpbrk | 查找字符串中第一个出现的属于另一个字符串的任意字符的指针 |
strrchr | 查找字符串中一个字符的出现的最后位置 |
strspn | 计算字符串的从开头起符合另一个字符串的连续字符个数 |
strstr | 在一个字符串中查找另一个字符串 |
strtok | 根据指定字符集分割一个字符串 |
strxfrm | 根据当前环境转化字符串,将转化后的前 n 个字符复制给另一个字符串 |
函数
memchr
原型:
const void * memchr ( const void * ptr, int value, size_t num );
void * memchr ( void * ptr, int value, size_t num );
说明:在参数
ptr
所指向的内存块的前num
个字节中搜索第一次出现字符value
(一个无符号字符)的位置,并返回相应的指针。返回值:找到返回相应的指针,否则返回
NULL
。实例:
#include <stdio.h>
#include <string.h>char str[1000], ch, *pch;int main(){gets(str);ch = getchar();pch = (char*) memchr(str, ch, strlen(str)); // memchr 的使用if ( pch != NULL){printf ("%c found at %d.\n", ch, pch - str);}else{printf ("%c not found.\n", ch);}return 0;
}
memcmp
原型:
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
说明:比较
ptr1
所指向的内存块的前num
个字节和ptr2
所指的内存块中的前num
个字节(均被视为无符号字符进行比较)。返回值:
返回值 比较的为指针所指向的内容 < 0 ptr1 < ptr2 0 ptr1 == ptr2 > 0 ptr1 > ptr2 实例:
#include <stdio.h>
#include <string.h>char s1[] = "abcdefg", s2[] = "abcdfgh";int main(){int n = memcmp(s1, s2, sizeof(s1));if ( n > 0 ){printf ("'%s' is greater.", s1);}else if( n == 0 ){printf ("'%s' is the same as '%s'.", s1, s2);}else{printf ("'%s' is greater.", s2);}return 0;
}
memcpy
原型:
void * memcpy ( void * destination, const void * source, size_t num );
说明:从
source
指定的内存块中复制num
个字节到destination
指定的内存块中。返回值:返回
destination
。警告:复制字符串时,它只负责进行复制
num
个字节,不会检查source
中的NULL
指针。实例:
#include <stdio.h>
#include <string.h>int a = 10, b = 0;
char s1[] = "abcdefg", s2[100];int main(){memcpy(&b, &a, sizeof(a));memcpy(s2, s1, strlen(s1) + 1);printf ("b is %d, s2 is '%s'.\n", b, s2);return 0;
}
memmove
原型:
void * memmove ( void * destination, const void * source, size_t num );
说明:从
source
指定的内存块中移动num
个字节到destination
指定的内存块中。返回值:返回
destination
。警告:复制字符串时,它只负责进行复制
num
个字节,不会检查source
中的NULL
指针。实例:
//去掉了字符串前面的 4 个空格。
#include <stdio.h>
#include <string.h>char s[] = " too space";int main(){memcpy(s, s+4, strlen(s+4)+1);printf ("s is '%s'.",s);return 0;
}
memset
原型:
void * memset ( void * ptr, int value, size_t num );
说明:将
value
按无符号字节方式填充ptr
所指的内存块,填充长度为num
个字节。返回值:返回
ptr
.实例:
#include <stdio.h>
#include <string.h>char str[] = "hello world!";
int a[100];int main(){memset(str, '-', strlen(str));puts(str);memset(a, 1, sizeof(int) * 100);printf("%d", a[1]); // 实际为 0x01010101return 0;
}
strcat
原型:
char * strcat ( char * destination, const char * source );
说明:将
source
中的内容追加到destination
中。返回值:返回
destination
。实例:
#include <stdio.h>
#include <string.h>char s1[] = "hello ", s2[] = "world!";int main(){strcat(s1,s2);puts(s1);return 0;
}
strchr
原型:
const char * strchr ( const char * str, int character );
char * strchr ( char * str, int character );
说明:返回
str
中的character
出现的第一个位置的指针。返回值:如果找到,返回
str
中的character
出现的第一个位置的指针;否则返回NULL
。实例:
#include <stdio.h>
#include <string.h>char str[] = "hello world!", ch = 'o';int main(){char *pch = strchr(str, ch);if ( pch != NULL){printf (" '%c' is found at %d.\n", ch, pch - str);}else{printf ("'%c' is not found.\n", ch);}return 0;
}
strcmp
原型:
int strcmp ( const char * str1, const char * str2 );
说明:比较字符串
str1
和str2
的字典序大小(ASCII)。返回值:
返回值 比较的为指针所指向的内容 < 0 str1 < str2 0 str1 == str2 > 0 str1 > str2 实例:
#include <stdio.h>
#include <string.h>char s1[] = "abcdefg", s2[] = "abcdfgh";int main(){int n = strcmp(s1, s2);if ( n > 0 ){printf ("\"%s\" is greater.", s1);}else if( n == 0 ){printf ("\"%s\" is the same as \"%s\".", s1, s2);}else{printf ("\"%s\" is greater.", s2);}return 0;
}
strcoll
原型:
int strcoll ( const char * str1, const char * str2 );
说明:默认情况下(
LC_COLLATE
为 “POSIX” 或 “C” )和strcmp
一样根据 ASCII 比较字符串大小。对于设置了LC_COLLATE
语言环境的情况下,则根据LC_COLLATE
设置的语言排序方式进行比较。例如:汉字,根据拼音进行比较。返回值:
返回值 比较的为指针所指向的内容 < 0 str1 < str2 0 str1 == str2 > 0 str1 > str2 实例:用法同
strcmp
一样,判断规则由LC_COLLATE
决定。
strcpy
原型:
char * strcpy ( char * destination, const char * source );
说明:将
source
的内容复制给destination
,需要保证destination
足够容纳source
的内容。返回值:返回
destination
。实例:
#include <stdio.h>
#include <string.h>char s1[] = "abcdefg", s2[100];int main(){strcpy(s2, s1);printf ("s2 is '%s'.", s2);return 0;
}
strcspn
原型:
size_t strcspn ( const char * str1, const char * str2 );
说明:返回
str1
中出现的第一个属于str2
的字符的位置。返回值:如果找到返回字符位置,否则返回字符串长度。
实例:
#include <stdio.h>
#include <string.h>int main(){int pos = strcspn("qwert1234des","0123456789");printf("%d", pos);return 0;
}
strerror
原型:
char * strerror ( int errnum );
说明:给出错误代码
errnum
的描述内容。返回值:返回描述错误内容的字符串指针。
实例:
#include <stdio.h>
#include <string.h>
#include <errno.h>int main(){FILE *f = fopen("unexist.file", "r");if( f == NULL ){printf ("Error: %s\n",strerror(errno));}return 0;
}
strlen
原型:
size_t strlen ( const char * str );
说明:返回字符串
str
的长度。返回值:返回字符串
str
的长度。实例:
#include <stdio.h>
#include <string.h>int main(){char a[] = "hello world!";printf("%d", strlen(a));return 0;
}
strncat
原型:
char * strncat ( char * destination, const char * source, size_t num );
说明:将
source
中的前num
个字符串追加到destination
后。返回值:返回追加后的
destination
指针。实例:
#include <stdio.h>
#include <string.h>char s1[] = "hello ", s2[] = "world! -----";int main(){strncat(s1, s2, 6);puts(s1);return 0;
}
strncmp
原型:
int strncmp ( const char * str1, const char * str2, size_t num );
说明:比较
str1
中的前num
个字符和str2
中 的前num
个字符的大小。返回值:
返回值 比较的为指针所指向的内容 < 0 str1 < str2 0 str1 == str2 > 0 str1 > str2 实例:
#include <stdio.h>
#include <string.h>char s1[] = "abcdfgh", s2[] = "abcdefg";int main(){int n = strncmp(s1, s2, 4);if ( n > 0 ){printf ("\"%s\" is greater in the first 4.", s1);}else if( n == 0 ){printf ("\"%s\" is the same as \"%s\" in the first 4.", s1, s2);}else{printf ("\"%s\" is greater in the first 4.", s2);}return 0;
}
strncpy
原型:
char * strncpy ( char * destination, const char * source, size_t num );
说明:将
source
中的前num
个字符复制给destination
。如果source
的长度大于num
,不会自动追加\0
。若小于,则会填充\0
,直到长度为num
。返回值:返回
destination
的指针。实例:
#include <stdio.h>
#include <string.h>int main(){char a[1000], b[1000] = "hello world!";strncpy(a, b, 5); //不会自动补 NULLa[5] = '\0';puts(a);return 0;
}
strpbrk
原型:
const char * strpbrk ( const char * str1, const char * str2 );
char * strpbrk ( char * str1, const char * str2 );
说明:查找字符串
str1
中第一个出现的属于字符串str2
中的任意字符的指针。返回值:返回字符串
str1
中第一个出现的属于字符串str2
中的任意字符的指针。若没找到,返回NULL
。实例:
#include <stdio.h>
#include <string.h>int main(){char a[] = "This is a test.", b[] = "aeiou";char *pch = strpbrk(a, b);printf("%d", pch - a);return 0;
}
strrchr
原型:
const char * strrchr ( const char * str, int character );
char * strrchr ( char * str, int character );
说明:在字符串中
str
查找最后一个character
的指针位置。返回值:如果找到,在字符串中
str
查找最后一个character
的指针位置。否则返回NULL
。实例:
#include <stdio.h>
#include <string.h>char str[] = "hello world!", ch = 'o';int main(){char *pch = strrchr(str, ch);if ( pch != NULL ){printf ("'%c' is found at %d.\n", ch, pch - str);}else{printf ("'%c' is not found.\n", ch);}return 0;
}
strspn
原型:
size_t strspn ( const char * str1, const char * str2 );
说明: 计算
str1
字符串从开头开始的连续字符,且这些字符都完全是str2
所指字符串中的字符。返回值:返回字符的个数。
实例:
#include <stdio.h>
#include <string.h>int main(){char a[] = "aaaaauuuuuxxxsada", b[] = "aeiou";int n = strspn(a, b);printf("%d", n); //输出为10,满足条件的字符串为aaaaauuuuu。return 0;
}
strstr
原型:
const char * strstr ( const char * str1, const char * str2 )
char * strstr ( char * str1, const char * str2 )
功能:查找字符串
str1
中首次出现字符串str2
的位置。说明:返回
str1
中首次出现str2
的位置的指针,如果str1
中不存在str2
则返回NULL
。实例:
#include <stdio.h>
#include <string.h>int main(){char a[] = "hello world!", b[] = "world";char *pch = strstr(a, b);printf("%d", pch - a);return 0;
}
strtok
原型:
char * strtok ( char * str, const char * delimiters );
说明:根据
delimiters
指定的内容进行分割。第一次需传入待分割的字符串str
指针,之后的调用传入NULL
即可。返回值:返回指向分割后相应的片段的指针。
实例:
#include <stdio.h>
#include <string.h>char str[] ="- This is a sample string.";int main (){char *pch = strtok(str, " .-,");while( pch != NULL){printf("%s\n", pch);pch = strtok(NULL, " .-,");}return 0;
}
strxfrm
原型:
size_t strxfrm ( char * destination, const char * source, size_t num );
说明:根据当前环境(由
LC_COLLATE
所指定)转化source
字符串,并将前num
个字符复制给destination
。返回值:返回转换后的字符串的长度。
string.h 详解相关推荐
- C语言字符串string.h详解
本文已整合到C语言标准库深度解读 文章目录 查询函数 比较函数 复制和追加 本地函数 为了看上去规整简洁,令 #define cSTR const char *str #define vSTR con ...
- c语言 string.h 详解
http://www.cnblogs.com/rosesmall/archive/2012/03/27/2419318.html
- 转载:c+string类详解
C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...
- 【转】Java魔法堂:String.format详解
Java魔法堂:String.format详解 目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六.对 ...
- 转: std::string用法详解
原文地址为: 转: std::string用法详解 C++中的string 类 简单介绍 前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱 ...
- js中toString()和String()区别详解
转载自 js中toString()和String()区别详解 我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 ...
- java中String s=abc及String s=new String(abc)详解
java中String s="abc"及String s=new String("abc")详解 1. 栈(stack)与堆(heap)都是Java用来在R ...
- Java的java.lang.String类详解
String类详解 String(字符串常量)概述 在API中是这样描述: String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. ...
- string 类型详解
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了! 下面先罗列出string ...
- C++ string 用法详解(转)
C++ string 详解 任何人对本文进行引用都要标明作者是Nicolai M.Josuttis /// C++ 语言是个十分优秀的语言,但优秀并不表示完美.还是有许多人不愿意使用C或者C++,为什 ...
最新文章
- 洛谷mNOIP模拟赛Day2-入阵曲
- php 上个月天数,php日期所在月的天数_PHP教程
- java中三种转string的方法_java中int,char,string三种类型的相互转换
- 钉钉产品介绍_钉钉上线安全教育新功能家校联动护航学生暑期安全
- Java IO(BIO, NIO, AIO) 总结
- 20150204--JS巩固与加强2-01
- 只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类...
- ResourceBundle和Properties(转载)
- IJCAI2021论文:MEDA:一种为小样本文本分类设计的结合数据增强的元学习框架
- 面试官:如何设计出骚气的秒杀系统?
- 视频识别车牌号(Python)
- WooCommerce税收入门指南,第2部分
- 不输 MacType,这些优化思路也能让 Windows 字体细腻清晰
- linux查看iozone安装目录,IOZone的基本使用
- 【杂记】数据存储架构
- 开源俄版三轴云台软硬件、调参软件调试可用,代码开源,入门说明
- 将OKRA-ERP配置成固定资产实物管理全过程
- 有什么APP软件可以测试耳环,心理测试选择自己喜欢的耳环,测试自己最招桃花的地方...
- No module named ‘torchvision‘
- 信息学奥赛一本通 1244:和为给定数 通过
热门文章
- redis源码阅读—hyperloglog(基数统计)
- K-均值聚类算法和二分K-均值算法
- oracle 创建.dmp文件,oracle创建表空间和导入dmp文件命令
- 2014-7-17 NOIP模拟赛
- 先定个小目标,免费360度评价(评估)反馈系统上线,开放部分源码
- 服务器销售周总结怎么写,网管周工作总结范文的内容
- 二十四节气—立秋,文案、海报分享。
- 分享6种时间管理方法,不要再说时间不够用了!
- Java编写五线谱上的音符_五线谱音符(五线谱1234567表示图)
- 北京大学计算机考研专业课考什么,北大计算机怎样考