memcpy
memcpy 函数原型如下:
void *memcpy(void *dest, void *src, unsigned int count);
功能:
从源 src 所指的内存地址的起始位置开始拷贝 n 个字节到目标
dest 所指的内存地址的起始位置中。
使用 memcpy 函数要包含头文件 string.h。
示例 1:从数组 a 复制到 k 个元素到数组 b
memcpy(b,a,sizeof(int)*k);
示例 2:若数组 a 和 b 都是浮点型的,复制时要写成:
memcpy(b,a,sizeof(double)*k);
示例 3:如果需要把数组 a 全部复制到数组 b 中,可以写成:
memcpy(b,a,sizeof(a));
memset
的作用是把数组 a 清零它也在 string.h中定义。 memset(a,0,sizeof(a))
使用 memset 比 for 循环更方便、快捷。
memset 函数原型如下:
void *memset(void *buffer, char c, int count);
功能:把 buffer 所指内存区域的前 count 个字节设置成字符 c
第三个参数指的是字节的个数,返回指向 buffer 的指针
在程序中需包含头文件:#include<string.h>
由 memset 函数的头文件可以知道,其主要是对字符数组进行设置,
当然也可以对数组进行初始赋值(一般是 0,-1)。
atoi
int atoi(char *s)
它表示将字符串 s 中的内容转换成一个整型数返回,如字符串“1234”,则函数返
回值是 1234。
itoa
在 stdlib.h 中有一个函数 itoa,它的函数原型如下:
char *itoa(int value,char *string,int radix)
它表示将整数 value 转换成字符串存入 string, radix 为转换时所用基数(保
存到字符串中的数据的进制基数 2 8 10 16),返回指向转换后的字符串的指针 。
例如,
是将 32 变成十进制数一个字符串“32”,并返回itoa(32,string,10)
指向这个字符串的指针;itoa(32,string,16)是将 32 变成十进制数一个字符串
“20”,并返回指向这个字符串的指针。
sprintf
sprintf是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。
sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
语句的功能是将整数abcdexyx打印成字符串存储在串buff中。
可以直接接受其返回值:
int len=sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z);
strchr
strchr函数定义如下:
char *strchr(const char *s,char c);</span>
功能:查找字符串s中首次出现字符c的位置。它的返回值是返回首次出现c的位置的指针,如果s中不存在c则返回NULL。包含此函数的头文件是string.h。
例如,本程序的if语句中strchr(s, buf[i])的功能是查找字符串s中首次出字符buf[i]的位置。如果strchr(s, buf[i])==NULL,则表明字符串s中没有buf[i]的字符。
sprintf函数、printf函数、fprintf函数的区别
printf输出到屏幕,fprintf输出到文件,而sprintf输出到字符串。需要注意是应该保证写入的字符串有足够的空间。
提示:C语言中的字符串是‘\0’结尾的字符数组,可以用strlen(s)返回字符串s中结束标记之前的字符个数。字符串中的各个字符是:s[0],s[1],…,s[strlen(s)-1]。
提示:由于字符串的本质是数组,它也不是“一等公民”,只能用strcpy(a,b)、strcmp(a,b)、strcat(a,b)来执行“赋值”、“比较”和“连接”操作。而不能用=、==、<=、+等运算符。上述函数都在string.h中声明。
提示:但编译选项-Wall编译程序时,会给出很多(但不是所有)警告信息,以帮助程序员查错。但并不能解决所有的问题:有些“错误”程序是合法的,只是这些动作不是你所期望的。
C语言中的gets(s)存在缓冲区溢出漏洞,不推荐使用。
代替者fgets?教程http://C语言中的gets(s)存在缓冲区溢出漏洞,不推荐使用。
字母操作
isalpha
原型:int isalpha(int ch)
用法:头文件加入#include <cctype>(C语言使用<ctype.h>)
功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,在标准c中相当于使用“isupper(ch)||islower(ch)”做测试,返回非零值(不一定是1),否则返回零。
isupper
原型:extern int isupper(int c);
头文件:<cctype>( C语言使用<ctype.h>)
功能:判断字符c是否为大写英文字母
说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。
附加说明: 此为宏定义,非真正函数。
islower
头文件:#include<cctype>( C语言使用<ctype.h>)
用法:int islower(int c)
函数说明:检查参数c是否为小写英文字母。
返回值:若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明:此为宏定义,非真正函数。
toupper
原型:extern int toupper(int c);
用法:#include <ctype.h>
功能:将字符c转换为大写英文字母
说明:如果c为小写英文字母,则返回对应的大写字母;否则返回原来的值。
tolower
功 能: 把字符转换成小写字母,非字母字符不做出处理
头文件:在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h
用 法: int tolower(int c);
说明:如果c为大写英文字母,则返回对应的小写字母;否则返回原来的值。
isdigit
原型:extern int isdigit(char c);
用法:#include <ctype.h>
功能:判断字符c是否为数字
说明:当c为数字0-9时,返回非零值,否则返回零。
附加说明:此为宏定义,非真正函数。
isprint
原型:extern int isprint(char c);
用法:#include <ctype.h>
功能:判断字符c是否为可打印字符(含空格)
说明:当c为可打印字符(0x20-0x7e)时,返回非零值,否则返回零。
附加说明:此为宏定义,非真正函数。
提示:头文件ctype.h中定义的isalpha、isdigit、isprint等工具可以用来判断字符的属性,而toupper、tolower等工具可以用来转换大小写。
说明:
(1)isalpha(c)用来检查c是否为字母,如果是字母,则返回1;否则返回0。
(2)isdigit(c)用来检查c是否为数字(0~9),如果是数字,则返回1;否则返回0。
(3)isprint(c)用来检查c是否为可打印字符(不包括空格),其ASCII码值在0x21~0x7e之间,如果是可打印字符,则返回1;否则返回0。
(4)toupper(c)用来将c字符转换为大写字母,返回c对应的大写字母。
(5)tolower(c)用来将c字符转换为小写字母,返回c对应的小写字母。