C语言字符、字符串定义及相关函数
c语言字符串操作函数统计子字符串出现的次数

文章标题:深度解析C语言字符串操作函数:统计子字符串出现的次数在C语言中,字符串是一种常见的数据类型,而对字符串进行操作也是我们经常需要做的工作。
其中,统计子字符串出现的次数是一个常见的需求。
在本文中,我们将深度解析C语言中的字符串操作函数,特别是统计子字符串出现的次数的方法和技巧。
1. C语言中的字符串操作函数C语言中提供了丰富的字符串操作函数,包括拷贝、连接、比较、查找等功能。
这些函数可以帮助我们高效地对字符串进行处理,其中就包括了统计子字符串出现的次数。
2. 统计子字符串出现的次数的方法在C语言中,我们可以通过循环遍历的方法来统计子字符串出现的次数。
具体而言,我们可以使用strstr函数来查找子字符串在原字符串中的位置,然后每次找到一个子字符串的位置就将计数器加一,直到找不到为止。
这样就可以得到子字符串在原字符串中出现的次数。
3. 以简单的示例来理解为了更好地理解上述方法,让我们以一个简单的示例来说明。
假设我们有一个字符串为"abababab",我们需要统计子字符串"ab"出现的次数。
我们可以通过遍历原字符串,使用strstr函数来查找"ab"在原字符串中的位置,并进行计数,最终得到子字符串"ab"在原字符串中出现的次数。
4. 总结与回顾通过本文的介绍,我们了解了C语言中统计子字符串出现次数的方法,以及如何使用字符串操作函数来实现。
这些技巧在实际的编程工作中是非常有用的,尤其是在需要对大量文本进行处理时。
5. 个人观点和理解个人认为,对于C语言中的字符串操作函数,尤其是统计子字符串出现次数的需求,我们需要充分了解和掌握相关的函数和方法。
只有深入理解了这些技巧,才能更好地应用于实际的项目开发中。
在知识的文章格式中,以上内容将更加详细地展开并用具体的代码示例来说明。
希望能帮助你更好地理解C语言中的字符串操作函数,并能够熟练地处理统计子字符串出现的次数的需求。
C语言中处理字符串的各种自定义函数(精)

{
If( (NULL==str1||(NULL==str2
{
printf(“ invalid argument(s” ;
return;
}
char *strcopy=str1;
while(„ \0‟ != *str1++=*str2++
;
return str1-str2;
}
三. strcat的自定义
char * sef_strcat(char *str1,char *str2
{
If( (NULL==str1||(NULL==str2
{
printf(“输入参数错误! ” ;
return;
}
char *strcopy=str1;
while(„ \0‟ !=*str1
;
*str1=‟ \0‟ ;
return strcopy;
}
二. strcmp的自定义
int sef_strcpy(char *str1,char *str2
{
If( (NULL==str1||(NULL==str2
{
printf(“输入参数错误,值为NULL ! \n” ;
return -1;
}
while(*str1&&*str2&&( *str1++==*str2++
{str++;}
while(„ \0‟ != (*str1++=*str2++
;
*str1=‟ \0‟ ;
C语言32个字符的定义

C语言32个字符的定义2009-03-0121:49auto:声明自动变量一般不使用double:声明双精度变量或函数int:声明整型变量或函数struct:声明结构体变量或函数break:跳出当前循环else:条件语句否定分支(与if连用)long:声明长整型变量或函数switch:用于开关语句case:开关语句分支enum:声明枚举类型register:声明积存器变量typedef:用以给数据类型取别名(当然还有其他作用)char:声明字符型变量或函数extern:声明变量是在其他文件正声明(也可以看做是引用变量)return:子程序返回语句(可以带参数,也看不带参数)union:声明联合数据类型const:声明只读变量float:声明浮点型变量或函数short:声明短整型变量或函数unsigned:声明无符号类型变量或函数continue:结束当前循环,开始下一轮循环for:一种循环语句(可意会不可言传)signed:生命有符号类型变量或函数void:声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支goto:无条件跳转语句sizeof:计算数据类型长度volatile:说明变量在程序执行中可被隐含地改变do:循环语句的循环体while:循环语句的循环条件static:声明静态变量if:条件语句转义字符的定义SqlServer中Sql语句的转义字符的使用(Escape charator)WHERE ProductName LIKE'[2005]%'如果这样,他就找第一个字符是2,0,5之中的任何一个,而实际上不是这样的这个时候就应该用转义,ESCAPE关键字WHERE ProductName LIKE'/[2005/]%'ESCAPE'/'/后边的都不是通配符了,而是一个字符。
like'%50/%%'ESCAPE'/'%_[][^]NOT LIKE'415%'二、VBScript转义字符(Escape Character)目前我所知道的VBScript需要的转义字符就只有一个“"”(西文双引号)。
C语言函数参考手册

C语言函数参考手册一、概述C语言是一种通用的、面向过程的程序设计语言,广泛应用于系统编程和应用软件开发等领域。
在C语言中,函数是非常重要的组成部分,通过函数可以实现代码的模块化和重复使用。
本手册旨在为C语言开发者提供函数相关信息的参考,包括常用函数的用法、参数说明和返回值等。
二、函数的声明函数声明是指在使用函数之前,需要先声明函数的存在及函数的参数类型和返回值类型。
函数声明通常位于源文件的开头部分,以便在其他代码中使用。
1. 函数声明的一般格式如下:返回值类型函数名(参数列表);2. 示例:int max(int a, int b);void printHello();三、函数的定义函数定义是指实现函数的功能代码,并且包含函数的参数和返回值类型的明确说明。
函数定义通常位于源文件的主体部分。
1. 函数定义的一般格式如下:返回值类型函数名(参数列表) {函数体代码return 返回值;}2. 示例:int max(int a, int b) {if (a > b) {return a;} else {return b;}}void printHello() {printf("Hello, world!\n");}四、函数的参数函数的参数是指在函数的括号内声明的变量,用于接受调用函数时传递的值。
函数的参数可以有多个,也可以没有参数。
1. 参数的声明格式如下:参数类型参数名2. 示例:int add(int a, int b);void printName(char* name);五、函数的返回值函数的返回值是指函数执行完成后返回的结果。
返回值可以是任何数据类型,如整数、浮点数、字符等。
函数的返回值可以有多种情况,根据具体逻辑来确定。
1. 返回值的声明格式如下:返回值类型2. 示例:int max(int a, int b);double calculateAverage(int array[], int length);六、常用函数C语言提供了许多常用的函数库,通过这些函数可以实现各种功能。
C语言基础知识详细版

字符变量
01
02
03
```c
char str[] = "Hello, 例子中,str是一个 包含13个字符的字符数组 ,存储了字符串常量 "Hello, world。"。
```c
char str[] = "Hello, world。"。
字符变量
```
在这个例子中,str是一个 包含13个字符的字符数组 ,存储了字符串常量 "Hello, world。"。
总结
05
先编译源文件生成目标文件
• 编译是将源代码翻译成目标代码的过程:C语言源代码文件通 常以“.c”为扩展名。编译后生成的目标文件通常以“.obj”或 “.o”为扩展名。连接是将目标文件和其他必要的库文件合并 成一个可执行文件的过程。
再连接生成可执行文件
• 连接时可能需要指定链接库的路径和名称:预编译处理命 令是指在源代码中以“”开头的指令。
```c
char c = 'A'。// 定义一个字符型变 量c并赋值为'A'。
C语言程序结构简述
```
标识符命名需符合规则,如a=20, b=15, sum=35等。标识符只能由字母、数字、下划线 组成。
先编译源文件生成目标文件
当我们编写好C语言程序后,需要先将其保存为以“.c”为后缀的源文件,然后使用C语言 编译器对源文件进行编译,生成以“.obj”或“.o”为后缀的目标文件。这个过程是将源 代码转换成机器码的过程。
变量赋值
在C语言中,可以使用赋值运算符(=)将一个值赋给一个变量。例如,可以使用 a = 2将整数值20赋给变量a。 变量在定义时可以直接赋值,也可以在定义后使用赋值运算符进行赋值。例如,可以定义一个变量a并立即给它 赋值:int a = 20。也可以先定义一个变量a,然后再给它赋值。
8种C语言基本常用的字符串处理函数

8种C语言基本常用的字符串处理函数8种C语言基本常用的字符串处理函数本文是店铺搜索整理的8种基本的常用的字符串处理函数,所有的C语言编译系统中一般都提供这些函数,以下是店铺为大家整理的8种C语言基本常用的字符串处理函数,仅供参考,希望能够帮助到大家。
1、puts函数——输出字符串的函数一般的形式为puts(字符串组)作用:将一个字符串输出到终端。
如,char一个string,并赋予初值。
调用puts(string);进行字符串的输出。
2、gets函数——输入字符串的函数一般的形式:gets(字符数组)作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址。
gets(str);键盘输入,,,,你懂得。
注意:puts和gets函数只能输出或者输入一个字符串。
3、strcat函数——字符串连接函数一般的形式:strcat(字符数组1,字符数组2);作用:把两个字符串数组中字符串连接起来,把字符串2连接到字符串1的后面。
说明:字符数组1必须足够大,以便容纳连接后的新字符串。
4、strcpy/strncpy函数——字符串复制函数一般形式:strcpy(字符数组1,字符串2);作用:将字符串2复制到字符数组1中去。
如:char str1[10],str2[]="DongTeng";strcpy(str1,str2);执行后的结果为:你懂得注意:1. 不能用赋值语句直接将一个字符串常量或者字符数组直接给一个字符数组。
2. 用strncpy可以赋值指定的位置的字符。
strncpy(str1,str2,3);将str2中的第3个字符复制到str1中。
5、strcmp函数——字符串比较函数一般形式:strcmp(字符串1,字符串2);作用:用来比较两个字符串的差异。
具有不同的比较规则。
6、strlen函数——测字符串长度的函数一般形式:strlen(字符数组);如:char str[10]="DongTeng";printf("%d",strlen(str));得到的结果是:57、strlwr函数——转换为小写的函数一般形式:strlwr(字符串);8、strupr函数——转换为大写的函数一般形式:strupr(字符串)。
C语言字符串操作函数

strtok()—字符串分割函数相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr头文件:#include <string.h>定义函数:char * strtok(char *s, const char *delim);函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符. 在第一次调用时,strtok()必需给予参数s 字符串, 往后的调用则将参数s 设置成NULL. 每次调用成功则返回下一个分割后的字符串指针.返回值:返回下一个分割后的字符串指针, 如果已无从分割则返回NULL.范例#include <string.h>main(){char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";char *delim = "-: ";char *p;printf("%s ", strtok(s, delim));while((p = strtok(NULL, delim)))printf("%s ", p);printf("\n");}执行结果:ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-与:字符已经被\0 字符取代strstr()—字符串查找函数相关函数:index, memchr, rindex, strchr, strpbrk, strsep, strspn, strtok头文件:#include <string.h>定义函数:char *strstr(const char *haystack, const char * needle);函数说明:strstr()会从字符串haystack 中搜寻字符串needle, 并将第一次出现的地址返回.返回值:返回指定字符串第一次出现的地址, 否则返回0.范例#include <string.h>main(){char * s = "012345678901234567890123456789";char *p;p = strstr(s, "901");printf("%s\n", p);}执行结果:9.01E+21strspn()—字符查找函数相关函数:strcspn, strchr, strpbrk, strsep, strstr头文件:#include <string.h>定义函数:size_t strspn(const char *s, const char * accept);函数说明:strspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全是accept 所指字符串中的字符.简单的说, 若strspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都是属于字符串accept 内的字符.返回值:返回字符串s 开头连续包含字符串accept 内的字符数目.范例#include <string.h>main(){char *str = "Linux was first developed for 386/486-based PCs. ";char *t1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";printf("%d\n", strspn(str, t1));}执行结果:5 //计算大小写字母. 不包含" ", 所以返回Linux 的长度.strrchr()—定位字符串中最后出现的指定字符相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok头文件:#include <string.h>定义函数:char * strrchr(const char *s, int c);函数说明:strrchr()用来找出参数s 字符串中最后一个出现的参数c 地址, 然后将该字符出现的地址返回.返回值:如果找到指定的字符则返回该字符所在地址, 否则返回0.范例#include <string.h>main(){char *s = "0123456789012345678901234567890";char *p;p = strrchr(s, '5');printf("%s\n", p);}执行结果:567890strpbrk()—定位字符串中第一个出现的指定字符相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr, strtok头文件:#include <include.h>定义函数:char *strpbrk(const char *s, const char *accept);函数说明:strpbrk()用来找出参数s 字符串中最先出现存在参数accept 字符串中的任意字符.返回值:如果找到指定的字符则返回该字符所在地址, 否则返回0.范例#include <string.h>main(){char *s = "0123456789012345678901234567890";char *p; p = strpbrk(s, "a1 839"); //1 会最先在s 字符串中找到printf("%s\n", p);p = strprk(s, "4398"); //3 会最先在s 字符串中找到printf("%s\n", p);}执行结果:1.23E+29strncat()—字符串连接函数相关函数:bcopy, memccpy, memecpy, strcpy, strncpy头文件:#inclue <string.h>定义函数:char * strncat(char *dest, const char *src, size_t n);函数说明:strncat()会将参数src 字符串拷贝n 个字符到参数dest 所指的字符串尾. 第一个参数dest 要有足够的空间来容纳要拷贝的字符串.返回值:返回参数dest 的字符串起始地址.范例#include <string.h>main(){char a[30] = "string(1)";char b[] = "string(2)";printf("before strncat() :%s\n", a);printf("after strncat() :%s\n", strncat(a, b, 6));}执行结果:before strncat() : string(1)after strncat() : string(1) stringstrncpy()—复制字符串相关函数:bcopy, memccpy, memcpy, memmove头文件:#include <string.h>定义函数:char * strncpy(char *dest, const char *src, size_t n);函数说明:strncpy()会将参数src 字符串拷贝前n 个字符至参数dest 所指的地址.返回值:返回参数dest 的字符串起始地址.范例#inclue <string.h>main(){char a[30] = "string(1)";char b[] = "string(2)";printf("before strncpy() : %s\n", a);printf("after strncpy() : %s\n", strncpy(a, b, 6));}执行结果:before strncpy() : string(1)after strncpy() : string(1)strncasecmp()—字符串比较函数(忽略大小写)相关函数:bcmp, memcmp, strcmp, strcoll, strncmp头文件:#include <string.h>定义函数:int strncasecmp(const char *s1, const char *s2, size_t n);函数说明:strncasecmp()用来比较参数s1 和s2 字符串前n 个字符, 比较时会自动忽略大小写的差异.返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值, s1 若小于s2 则返回小于0 的值.范例#include <string.h>main(){char *a = "aBcDeF";char *b = "AbCdEf";if(!strncasecmp(a, b))printf("%s =%s\n", a, b);}执行结果:aBcDef=AbCdEfstrlen()—字符串长度计算函数相关函数:无头文件:#include <string.h>定义函数:size_t strlen (const char *s);函数说明:strlen()用来计算指定的字符串s 的长度, 不包括结束字符"\0".返回值:返回字符串s 的字符数.范例:/*取得字符串str 的长度*/#include <string.h>main(){char *str = "12345678";printf("str length = %d\n", strlen(str));}执行结果:str length = 8strdup()—复制字符串相关函数:calloc, malloc, realloc, free头文件:#include <string.h>定义函数:char * strdup(const char *s);函数说明:strdup()会先用maolloc()配置与参数s 字符串相同的空间大小, 然后将参数s 字符串的内容复制到该内存地址, 然后把该地址返回. 该地址最后可以利用free()来释放.返回值:返回一字符串指针, 该指针指向复制后的新字符串地址. 若返回NULL 表示内存不足.范例#include <string.h>main(){char a[] = "strdup";char *b;b = strdup(a);printf("b[]=\"%s\"\n", b);}执行结果:b[]="strdup"strcspn()—查找字符串相关函数:strspn头文件:#inclued<string.h>定义函数:size_t strcspn(const char *s, const char * reject);函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.返回值:返回字符串s 开头连续不含字符串reject 内的字符数目.范例#include <string.h>main(){char *str = "Linux was first developed for 386/486-based pcs. ";printf("%d\n", strcspn(str, " "));printf("%d\n", strcspn(str, "/-"));printf("%d\n", strcspn(str, "1234567890"));}执行结果:5 //只计算到" "的出现, 所以返回"Linux"的长度33 //计算到出现"/"或"-", 所以返回到"6"的长度30 // 计算到出现数字字符为止, 所以返回"3"出现前的长度strcpy()—复制字符串相关函数:bcopy, memcpy, memccpy, memmove头文件:#include <string.h>定义函数:char *strcpy(char *dest, const char *src);函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址.返回值:返回参数dest 的字符串起始地址.附加说明:如果参数dest 所指的内存空间不够大, 可能会造成缓冲溢出(buffer Overflow)的错误情况, 在编写程序时请特别留意, 或者用strncpy()来取代.范例#include <string.h>main(){char a[30] = "string(1)";char b[] = "string(2)";printf("before strcpy() :%s\n", a);printf("after strcpy() :%s\n", strcpy(a, b));}执行结果:before strcpy() :string(1)after strcpy() :string(2)strcoll()—字符串比较函数(按字符排列次序)相关函数:strcmp, bcmp, memcmp, strcasecmp, strncasecmp头文件:#include <string.h>定义函数:int strcoll(const char *s1, const char *s2);函数说明:strcoll()会依环境变量LC_COLLATE 所指定的文字排列次序来比较s1 和s2 字符串.返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值. s1 若小于s2 则返回小于0 的值.附加说明:若LC_COLLATE 为"POSIX"或"C", 则strcoll()与strcmp()作用完全相同.范例参考strcmp().strcmp()—字符串比较函数(比较字符串)相关函数:bcmp, memcmp, strcasecmp, strncasecmp, strcoll头文件:#include <string.h>定义函数:int strcmp(const char *s1, const char *s2);函数说明:strcmp()用来比较参数s1 和s2 字符串. 字符串大小的比较是以ASCII 码表上的顺序来决定, 此顺序亦为字符的值. strcmp()首先将s1 第一个字符值减去s2 第一个字符值, 若差值为0 则再继续比较下个字符, 若差值不为0 则将差值返回. 例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33).返回值:若参数s1 和s2 字符串相同则返回0. s1 若大于s2 则返回大于0 的值. s1 若小于s2 则返回小于0 的值.范例#include <string.h>main(){char *a = "aBcDeF";char *b = "AbCdEf";char *c = "aacdef";char *d = "aBcDeF";printf("strcmp(a, b) : %d\n", strcmp(a, b));printf("strcmp(a, c) : %d\n", strcmp(a, c));printf("strcmp(a, d) : %d\n", strcmp(a, d));}执行结果:strcmp(a, b) : 32strcmp(a, c) :-31strcmp(a, d) : 0strchr()—字符串查找函数(返回首次出现字符的位置) 相关函数:index, memchr, rinex, strbrk, strsep, strspn, strstr, strtok头文件:#include <string.h>定义函数:char * strchr (const char *s, int c);函数说明:strchr()用来找出参数s 字符串中第一个出现的参数c 地址, 然后将该字符出现的地址返回.返回值:如果找到指定的字符则返回该字符所在地址, 否则返回0.范例#include <string.h>main(){char *s = "0123456789012345678901234567890";char *p;p = strchr(s, '5');printf("%s\n", p);}执行结果:5.68E+25strcat()—连接字符串相关函数:bcopy, memccpy, memcpy, strcpy, strncpy头文件:#include <string.h>定义函数:char *strcat(char *dest, const char *src);函数说明:strcat()会将参数src 字符串拷贝到参数dest 所指的字符串尾. 第一个参数dest 要有足够的空间来容纳要拷贝的字符串.返回值:返回参数dest 的字符串起始地址范例#include <string.h>main(){char a[30] = "string(1)";char b[] = "string(2)";printf("before strcat() : %s\n", a);printf("after strcat() : %s\n", strcat(a, b));}执行结果:before strcat() : string(1)after strcat() : string(1)string(2)strcasecmp()—字符串比较函数(忽略大小写比较字符串) 相关函数:bcmp, memcmp, strcmp, strcoll, strncmp头文件:#include <string.h>定义函数:int strcasecmp (const char *s1, const char *s2);函数说明:strcasecmp()用来比较参数s1 和s2 字符串, 比较时会自动忽略大小写的差异.返回值:若参数s1 和s2 字符串相同则返回0. s1 长度大于s2 长度则返回大于0 的值, s1 长度若小于s2 长度则返回小于0 的值.范例#include <string.h>main(){char *a = "aBcDeF";char *b = "AbCdEf";if(!strcasecmp(a, b))printf("%s=%s\n", a, b);}执行结果:aBcDeF=AbCdEfrindex()—字符串查找函数(返回最后一次出现的位置)相关函数:index, memchr, strchr, strrchr头文件:#include <string.h>定义函数:char * rindex(const char *s, int c);函数说明:rindex()用来找出参数s 字符串中最后一个出现的参数c 地址, 然后将该字符出现的地址返回. 字符串结束字符(NULL)也视为字符串一部分.返回值:如果找到指定的字符则返回该字符所在的地址, 否则返回0.范例#include <string.h>main(){char *s = "0123456789012345678901234567890";char *p;p = rindex(s, '5');printf("%s\n", p);}执行结果:567890index()—字符串查找函数(返回首次出现的位置)相关函数:rindex, srechr, strrchr头文件:#include <string.h>定义函数:char * index(const char *s, int c);函数说明:index()用来找出参数s 字符串中第一个出现的参数c 地址, 然后将该字符出现的地址返回. 字符串结束字符(NULL)也视为字符串一部分.返回值:如果找到指定的字符则返回该字符所在地址, 否则返回0.范例#include <string.h>main(){char *s = "0123456789012345678901234567890";char *p;p = index(s, '5');printf("%s\n", p);}执行结果:5.68E+25toupper()—字符串转换函数(小写转大写)相关函数:isalpha, tolower头文件:#include <ctype.h>定义函数:int toupper(int c);函数说明:若参数 c 为小写字母则将该对应的大写字母返回.返回值:返回转换后的大写字母, 若不须转换则将参数c 值返回.范例/* 将s 字符串内的小写字母转换成大写字母*/#include <ctype.h>main(){char s[] = "aBcDeFgH12345;!#$";int i;printf("before toupper() : %s\n", s);for(i = 0; I < sizeof(s); i++)s[i] = toupper(s[i]);printf("after toupper() : %s\n", s);}执行结果:before toupper() : aBcDeFgH12345;!#$after toupper() : ABCDEFGH12345;!#$tolower()—字符串转换函数(大写转小写)作相关函数:isalpha, toupper头文件:#include <stdlib.h>定义函数:int tolower(int c);函数说明:若参数 c 为大写字母则将该对应的小写字母返回.返回值:返回转换后的小写字母, 若不须转换则将参数c 值返回.范例/* 将s 字符串内的大写字母转换成小写字母*/#include <ctype.h>main(){char s[] = "aBcDeFgH12345;!#$";int i;printf("before tolower() : %s\n", s);for(i = 0; I < sizeof(s); i++)s[i] = tolower(s[i]);printf("after tolower() : %s\n", s);}执行结果:before tolower() : aBcDeFgH12345;!#$after tolower() : abcdefgh12345;!#$toascii()—将整数转换成合法的ASCII码字符相关函数:isascii, toupper, tolower头文件:#include <ctype.h>定义函数:int toascii(int c);函数说明:toascii()会将参数c 转换成7 位的unsigned char 值, 第八位则会被清除, 此字符即会被转成ASCII码字符.返回值:将转换成功的ASCII 码字符值返回.范例/* 将int 型a 转换成ASSII 码字符*/#include <stdlib.h>main(){int a = 217;char b;printf("before toascii() : a value =%d(%c)\n", a, a);b = toascii(a);printf("after toascii(): a value =%d(%c)\n", b, b);}执行结果:before toascii() : a value =217()after toascii() : a value =89(Y)strtoul()—将字符串转换成无符号长整型数相关函数:atof, atoi, atol, strtod, strtol头文件:#include <stdlib.h>定义函数:unsigned long int strtoul(const char *nptr, char **endptr, int base);函数说明:strtoul()会将参数nptr 字符串根据参数base 来转换成无符号的长整型数。
C语言里面关于字符数组的函数定义的头文件

C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,更详细的可以到include文件夹里面查看该文件。
下面更详细的介绍下:/*************************************************************** ********/C、传统 C++#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类/*************************************************************** ********/标准 C++ (同上的不再注释)#include <algorithm> //STL 通用算法#include <bitset> //STL 位集容器#include <cctype>#include <cerrno>#include <clocale>#include <cmath>#include <complex> //复数类#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <deque> //STL 双端队列容器#include <exception> //异常处理类#include <fstream>#include <functional> //STL 定义运算函数(代替运算符)#include <limits>#include <list> //STL 线性列表容器#include <map> //STL 映射容器#include <iomanip>#include <ios> //基本输入/输出支持#include <iosfwd> //输入/输出系统使用的前置声明#include <iostream>#include <istream> //基本输入流#include <ostream> //基本输出流#include <queue> //STL 队列容器#include <set> //STL 集合容器#include <sstream> //基于字符串的流#include <stack> //STL 堆栈容器#include <stdexcept> //标准异常类#include <streambuf> //底层输入/输出支持#include <string> //字符串类#include <utility> //STL 通用模板类#include <vector> //STL 动态数组容器#include <cwchar>#include <cwctype>using namespace std;/*************************************************************** ********/C99 增加#include <complex.h> //复数处理#include <fenv.h> //浮点环境#include <inttypes.h> //整数格式转换#include <stdbool.h> //布尔环境#include <stdint.h> //整型环境#include <tgmath.h> //通用类型数学宏/*************************************************************** ********/。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、strcmp 功能:比较两个字符串,两个字符串从左向右逐个字符相比(按ASCII值比较),直到出现不同的字
符或遇到‘\0’为止 格式:extern int strcmp(const char *s1,const char *s2); 结果: 当s1<s2时,返回一个负数 当s1=s2时,返回值为0 当s1>s2时,返回正数
char str={'"','h','e','l','l','o','"','\0'}; =“hello”(必须加“\0”,若没有他,认为字符 数组,不是字符串) 3、char指针 char *m="hello,world";
数组形式和指针形式的区别:
数组形式: 编译器会把数组名m看作是数组首元素的地址&m[0]的同义词,m是个地址常量。可以用m+1来标识 数组里的下一个元素,但不能使用++m,增量运算符只能在变量前使用, 而不能在常量前使用。
19、strspn 功能:从str字符串的开头计算连续的字符,而这些字符全都是accept所指的字符串中的字符,如果
返回值是n,则代表字符串str开头连续有n个字符都是属于字符串accept内的字符 格式:size_t strspn(char const *str,char const *accept)
到遇上非数字或字符串结束时结束转换。将不合条件而终止的nptr字符指针有endptr返回。 9、strtod
功能:将字符串转换为浮点数 函数定义: double strtod(const char *nptr,char **endptr); nptr字符串可包含正负号,小数点或E(e)来表示指数部分,如123.456或123e-2.
查找函数
14、strchr 功能:查找字符串str中首次出现字符val的位置,返回首次出现val的位置指针,失败返回NULL 格式:char *strchr(const char* _Str,char val)
15、strrchr 功能:在字符串里查找最后出现字符val的位置 格式:char *strrchr(const char *str, char val); 这样返回当前位置,就能对val位置以后的字符串进行操作。
islower
小写字母 a-z
isupper
void * memchr(void * const a,int ch,size_t length); 从a的位置开始查找字符ch第一次出现的位置。
返回该位置的指针,总共查找length个字节
void * menset(void * a,int ch,size_t length );
从a的位置length字节都设置为字符值ch。
把src内存位置复制到一个临时位置,这个位置不会跟src或dst重叠,然后再把他从临时位置复制 到到目标位置,所以比memecpy慢一些,但是src如果和dst有重叠,就只能用memmove、
例:memmove(x,x+1,100);
void * memcmp(void * const dst,void const *src,size_t length); 对两端内存进行比较n个字符
m[40]在计算机内存中被分配一个有40个元素的数组(其中每个元素对应一个字符,还有一个附加 的元素对应结束的空字符'\0')。每个元素都被初始化为相应的字符 指针形式: 指针形式(*m)也会在静态存储区为字符串预留空间。此外,一旦程序开始执行,还要为指针变量 m另外预留一个存储位置,以在该指针变量中能够存储字符串的地址。
20、strcspn 功能:与strspn相反,返回str字符串起始部分中不与accept中任何字符匹配的计数。 格式:size_t strcspn(char const * str,char const * accept)
21、strtok 功能:用来将字符串分隔成一个个片段。参数src指向欲分割的字符串,sep是一个字符串,定义了用
格式:char * strtok(char* str,char const * sep) 例:
main(){ char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z"; char *delim = "-: "; char *p; printf("%s ", strtok(s, delim)); while((p = strtok(NULL, delim)))
9、atoi 功能:将字符串转换成整数型的一个函数。 函数定义: int atoi(const char *nptr); nptr课包括正负号。转换后没小数,因为是int类型
10、atol 功能:将字符串转换为长整型数 函数定义: long atol(const char *nptr);
11、atof 功能:将字符串转换为浮点型
2、strcat 功能:把src所指字符串添加到dest结尾处,覆盖dest结尾处的‘\0’,返回指向dest的指针 格式:extern char *strcat(char *dest,char *src);
3、strcpy 功能:把从src地址开始且含有NULL结束符的字符串复制到dest开始的地址空间,返回指向dest的指
17、strrstr 功能:在字符串中查找指定字符串最后一次出现的位置 格式:char *strrstr(char *str1, char *str2); 注意:这个在库里边没有,需要自己写 函数实现: char *my_strrstr(char *dest,char *src) { char *first=NULL; char *second=NULL; char *str1=dest; char *str2=src; assert(dest); assert(src); while((*str1 != '\0')) { first=str1; //记录下一次比较的起始位置 while((*str1 != '\0') && (*str2 != '\0') && (*str1 == *str2)) { str1++; str2++; } if(*str2 == '\0') second=first; //从第一次查找到子串的位置后继续查找 str1=first+1; str2=src; }
5、strncpy 功能:把从src地址开始的前n个字符复制到dest开始的地址空间,返回指向dest的指针,会产生不以
NUL结尾的字符串,注意 格式:extern char *strcpy(char *dest,char *src,size_t n); 也可以把字符数组转换为字符串
5、strncmp 功能:比较两个字符串 格式:int strncmp ( const char * str1, const char * str2, size_t n );
if(*str1 == '\0') return second;
return ; }
18、strpbrk 功能:在源字符串(S1)中找出最先含有字符串(S2)中任一字符的位置并返回,若找不到则返回空
指针。 格式:extern char *strpbrk(const char *s1, const char *s2);
字符、字符串及相关的函数
C语言中没有string类型,字符串都是通过char形式存储的 typedef const char * string;
定义字符串的几种形式:字符串常量,char数组,char指针
1、字符串常量 printf("%s","hello") 2、char数组 char str[40] ="hello,world";
12、itoa
功能:将任意类型的数字转换成字符串 函数定义:char*itoa(int value,char*string,int radix); int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数
13、sprintf(filename,“./tmp_file/%s”,uuid_buf) filename 就保存为当前目录下tmp_file的uuid_buf
8、bcmp 功能:比较字符串S1和S2前n个字节是否相等 格式:extern int bcmp(const void *s1, const void *s2, int n);
7、strtol(nptr不能等于NULL) 功能:将字符串转换为长整型数 函数定义: long int strtol(const char *nptr,char **endptr,int base);
针 格式:extern char *strcpy(char *dest,char *src); 注意: 这个函数的第一个参数必须分配内存,而且内存大小必须能够存的下Src。
4、strncat 功能:把src所指的字符串的前n个字符添加到dest所指的字符串结尾处,覆盖‘\0’,返回指向dest
的指针 格式:extern char *strncat(char *dest,const *src,size_t n);
作分隔符的字符集合.strtok找到str的一个标记后,将其用NUL结尾,然后返回一个指向这个标记的指 针。
如果strtok函数的第一个参数不是NULL,函数将找到字符串的第一个标记,strtok同时将保存他在字 符串中的位置。如果strtok的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始像 前面一样查找下一个标记。如果没有更多标记,则返回NULL