Linux C 第五章 字符串处理函数
来源:互联网 发布:开票软件年费 编辑:程序博客网 时间:2024/06/06 03:17
第五章 字符串处理函数
//所需头文件#include "string.h"bcmp : int bcmp(const void *s1, const void *s2, int n); 比较内存内容 用来比较s1 和s2 所指的内存前n个字节,n=0;返回0; s1 s2相同返回0,不相同返回非0; 若参数s1和s2所指的内存内容完全相同返回0,否则返回非零值; char str1[] = "hello"; char str2[] = "yes"; if (bcmp(str1, str2, 3)){};bcopy : void bcopy(const void *src, void *dest, int n); 拷贝内存内容 将src 的前n个字节copy 到dest bcopy(src, dest, n); src 指针放在前。 char str1[10] = "hello"; char str2[10] = ""; bcopy(str1, str2, 5);bzero : void bzero(void *s, int n); 将参数s所指的内存区域前n个字节,全部设为0; char s[30]; bzero(s, sizeof(s));ffs : int ffs(int i);(在一个整型数中查找第一个值为真的位) 会由低位到高位,判断i字节中每一位,将最先出现位值为1的位置返回。 返回值0~32 bit位,第一个为真的位置; int i[] = {0, 2, 4, 6, 8, 16, 32, 64}; int j; for (j = 0; j < 8; j++) printf("%d : %d \n", i[i], ffs(i[j])); 输出结果 0 : 0 1 : 1 2 : 2 4 : 3 8 : 4 16 : 5 32 : 6index : char *index(sonst char *s, int c); 找出s字符串中第一个出现c的地址,然后将此地址返回。未找到c返回0; char *s = "022145678"; char *p; p = index(s, '5'); //5678memccpy : void *memccpy(void *dest, const void *src, int c, size_t n); 拷贝内存内容 用来拷贝src所指向的内存内容前n个字节到dest所指向的地址上。现memcpy不同的是,memccpy()会在复制时检查参数c是否 出现,若是则返回dest中值为c的下一个字节地址。 返回指向dest中值为c的下一个字节指针。返回值0表示在src所指的内存前n个字节中没有值为c的字节。memchr :void *memchr(const void *s, int c, size_t n); 在某一内存范围中查找一特定字符 从头开始搜寻s所指向的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字符的指针; 如果找到指定字节,则返回指向该字符的指针,否则返回0; char *s = "01234567894567891456"; char *p; p = memchr(s, '5', 10); printf("%s\n", p); //输出567894567891456memcmp :int memcmp(const void *s1, const void *s2, size_t n); 用来比较s1和s2所指定内存区前n个字符,字符串大小以ASCII码表上的顺序来决定,s1 = s2 返回0; s1 > s2返回大于0的值,s1 < s2返回小于0的值;memcpy : void *memcpy(void *dest, const void *src, size_t n); 用来拷贝src所指向的内存内容前n个字节到dest所指向的地址上。会完整复制n个字节;memfrob : void *memfrob(void *s, size_t n); 对内存区域编码 用来将参数s所指向的内存空间前n个字符与42作OXR运算,用途是可以隐藏一特定字符串内容,只要再用相同的参数 调用memfrob()即可还原内容; char s[] = "This is test memfrob"; printf("%s\n", s); memfrob(s, strlen(s)); printf("%s\n", s); memfrob(s, strlen(s)); printf("%s\n", s);memmove :void *memmove(void *dest, const void *src, size_t n); 用来拷贝src所指向的内存内容前n个字节到dest所指向的地址上。当src和dest所指向的内存区域重叠时memmove仍然可以正确处理;memset : void *memset(void *s, int c, size_t n); 将参数s所指向的内存区域前n个字节以参数c填入,然后返回指向s的指针; char s[30]; memset(s, 'X', sizeof(s)); s[30] = '\0'; //字符串结尾要补入‘\0’ 字符结束符; printf("%s\n", s);rindex : char *rindex(sonst char *s, int c); 用来找出s字符串中最后一个出现c的地址,然后将此地址返回。字符串结束符(NULL)也视为字符串的一部分,未找到c返回0;strcasecmp: int strcasecmp(const char *s1, const char *s2); 用来比较参数s1 和 s2 字符串,比较时会自动忽略大小写的差异 s1 s2相同返回0,s1长度大于s2长度返回大于0, s1长度小于s2返回小于0的值。strcat : char *strcat(char *dest, const char *src); 连接两个字符串 将参数src字符串拷贝到参数dest所指的字符串尾,dest要有足够的空间来容纳拷贝的字符串; 返回dest字符串的起始地址; char a[30] = "hello "; char b[] = "world"; strcat(a, b);strchr : char *strchr(const char *s, int c); 找出s1 中第一个出现c 的地址 ,然后将该字符出现的地址返回; char *s = "01234564879871312156"; char *p; p = strchr(s, '6');strcmp :int strcmp(const char *s1, const char *s2); 用来比较s1和s2,字符串大小以ASCII码表上的顺序来决定,s1 = s2 返回0; s1 > s2返回大于0的值,s1 < s2返回小于0的值;strcoll : int strcoll(const char *s1, const char *s2); 会依环境变量LC_COLLATE所指定的文字排列次序来比较参数s1和s2字符串; 若参数s1和s2所指的内存内容完全相同返回0,s1 若大于 s2 返回大于0的值, s1 若小于s2返回小于0的值;strcpy : char *strcpy(char *dest, const char *src); 将参数src字符串拷贝到参数dest所指的地址;返回参数dest的起始地址;strcspn :size_t strcspn(const char *s, const char *reject); 从参数s字符串开头计算连续的字符,而这些字符都完全不在参数reject所指的字符串中; 返回字符串s开头连续不含字符串reject内的字符数目; char *str = "Abcdefg1234567/12346-586"; strcspn(str, 'e'); strcspn(str, '2');strdup : char *strdup(const char *s); 复制字符串 会先用malloc()分配与参数s字符串相同大小的空间,然后将参数s字符串内容复制到该空间,然后把地址返回; 该地址最后可以用free()来释放; 返回新字符串地址,若返回NULL表示内存不足; char a[] = "strdup"; char *b; b = strdup(a); printf("%s\n", b);strfry : char *strfry(char *string); 随机重组字符串 会利用rand()来随机重新分配参数string字符串内的字符,然后返回指向参数string字符串的指针; char a[] = "strfry"; printf("%s\n", strfry(a));strlen : size_t strlen(const char *s); 用来记算指定的字符串s的长度,不包括结束符‘\0’; 返回字符串s的字符数; char *str = "123456789"; printf("%d\n", strlen(str));strncasecmp :int strncasecmp(const char *s1, const char *s2, size_t n);忽略大小写比较字符串 用来比较s1 和 s2 字符串前n个字符,比较时会自动忽略大小写的差异; 若参数s1和s2字符串相同则返回0,s1大于s2时返回大于0值, s1小于s2时返回小于0值; char *s1 = "AbCdeF"; char *s2 = "aBcdeF"; strncasecmp(s1, s2, strlen(s1));strncat :char *strncat(char *dest, const char *src, size_t n);连接两个字符串 将src字符串拷贝n个字符到dest所指的字符串尾;第一个参数dest要有足够的空间; 返回dest字符串的起始地址; char a[30] = "Linux is good"; char b[] = "hello linux"; printf("%s\n", strncat(a,b, 5));strncmp :int strncmp(const char *s1, const char *s2, size_t n);比较字符串 用来将参数s1中前n个字符和参数s2字符串做比较;若参数s1和s2字符串相同则返回0, s1大于s2时返回大于0值, s1小于s2时返回小于0值;strncpy :char *strncpy(char *dest, const char *src, size_t n); 拷贝字符串 将参数src字符串拷贝前n个字符至参数dest所指的地址。 返回参数dest的起始地址;strpbrk : char *strpbrk(const char *s, const char *accept); 查找字符串第一个出现的指定字符 用来找出参数s字符串中最先出现存在参数accept字符串中的任意字符; 返回找到指定字符的地址,未找到返回0;strrchr :char *strrchr(const char *s, int c); 查找字符串最后一个出现的指定字符 用来找出参数s字符串中最后一个出现的参数c的地址,然后将该地址返回,未找到返回0;strspn :size_t strspn(const char *s, const char *accept); 从参数s字符串的开头计算连续的字符,而这些字符都完全是accept所指字符串中的字符。 返回字符串s开头连续包含字符串accept内的字符数目;strstr :char *strstr(const char *haystack, const char *needle); 会从字符haystack中搜索字符串needle,并返回第一次出现的地址. 返回指定字符串中第一次出现的地址,否则返回0;strtok :char *strok(char *s, const char *delim);分割字符串 用来将字符串分割成一个个片段,参数s指向欲分割的字符串,参数delim则为分割这符串,当strtok()在参数s的字符串中 发现参数delim的分割字符时则会将该字符改为‘\0’字符,在第一次调用时strtok()必须给予参数s字符串,往后的调用则将 参数s设为NULL。每次调用成功则返回下一个分割后的字符串指针; 返回下一个分割的字符串指针,如果已无从分割则返回NULL; char s[] = "ab-ad; ef;gh;i-jefljl;mkljfjei;jlakfe;wve-ave;efq;"; char *delim = "-; "; char *p; printf("%s ", strtok(s, delim)); while( (p=strtok(NULL, delim))) printf("%s ",p); printf("\n");
阅读全文
0 0
- Linux C 第五章 字符串处理函数
- linux c常用字符串处理函数( 1 )
- linux c常用字符串处理函数( 2 )
- linux c常用字符串处理函数
- linux c常用字符串处理函数
- linux c常用字符串处理函数
- c++(字符串处理函数)
- C字符串处理函数
- C字符串处理函数
- c++(字符串处理函数)
- C字符串处理函数
- C字符串处理函数
- C字符串处理函数
- C- 字符串处理函数
- c 字符串处理函数
- C字符串处理函数
- C字符串处理函数
- C字符串处理函数
- 阿里云ECS搭建SS服务器的方法
- [知了堂学习笔记] jQuery的事件
- 多对一,多对对的配置文件
- TI协议栈例程GenericApp SampleApp SimpleAp 区别
- DH算法(密钥交换算法)
- Linux C 第五章 字符串处理函数
- 1.第一个C++程序
- Java 多态
- 图片高斯模糊[python]
- javaweb_1
- 【学习笔记】Python基础-数据类型与变量
- java中String类测试总结
- python3爬取当天最高气温
- 【java提高】HashMap解析(一)