参考书目:周兆熊《C程序员从校园到职场》
一、内存操作函数
memset——void *memset(void *dest, int c, size_t count);
函数功能:将已开辟内存空间dest的前count个字节的值设为c。
用 法:除了可用于对指定位置设定值之外,还可以用于内存空间初始化,内存简单复制,清空一个结构类型的变量或数组等。
memcpy——void *memcpy(void *dest, const void *src, size_t count);
函数功能:将首地址为src的前count个字节复制到首地址dest。其中src和dest所指内存区域不能重叠,返回值为dest指针。
用 法:实际开发中,经常memset和memcpy同时使用,先用memset初始化数组或结构体变量,再用memcpy将内容复制到变量中。
二、字符串操作函数
strcat和strncat
char *strncat( char *strDest, const char *strSource, size_t count);将strSource数组中前count个字符拼接到strDest数组后面。一般用strncat防止出现字符串连接大小不匹配导致越界的问题。
strcpy和strncpy
char *strncpy( char *strDest, const char *strSource, size_t count);将strSource数组中前count个字符复制到strDest数组。一般用strncpy防止出现字符串复制大小不匹配导致越界的问题。
strcmp和strncmp
int *strncmp( const char *string1, const char *string2, size_t count);只比较两个数组前count个字符,返回值小于0,则前一个字符串小,等于0则相等,大于0则前一个字符串大。int *strcmp( const char *string1, const char *string2);比较两个数组所有字符,返回值小于0,则前一个字符串小,等于0则相等,大于0则前一个字符串大。
三、文件操作函数
fopen——FILE *fopen( const char *path, const char *mode);
函数功能:path字符串包含欲打开的文件路径及文件名,mode字符串代表流形态,有以下几种:
r:打开只读文件,该文件必须存在。
r+:打开可读写文件,该文件必须存在。
w:打开只写文件,若存在,则长度清0,即删除内容,不存在则建立。
w+:打开可读写文件,若存在,则长度清0,即删除内容,不存在则建立。
a:打开只写文件,若存在,续写,保留原内容,不存在则建立。
a+:打开可读写文件,若存在,续写,保留原内容,不存在则建立。
后加b表示文件为二进制文件。
返回值:文件顺利打开,返回文件指针,文件打开失败,返回NULL,后续使用要进行错误判别。
fclose——int fclose(FILE *stream);
函数功能:关闭文件,与fopen配合使用,使缓冲区数据写入文件,释放系统资源。
返回值:成功返回0,错误返回EOF。
fgetc——int fgetc(FILE *stream);从文件中读取一个字符,成功返回0,错误返回EOF
fgets——char fgets(char *s, int size, FILE *stream);从文件中读入size-1个字符,存入s所指内存空间,遇到换行和文件尾也停止,末尾加NULL作为结束。成功则返回s指针,错误则返回NULL。
fflush实现fclose强制将缓冲区数据写入文件的功能,用法相同。
fputc——int fputc( int c, FILE *stream);将c转为unsigned char后写入文件,成功则返回c,失败返回EOF。
fputs——int fputs( const char *s, FILE *stream);将字符串s写入文件,成功则反户籍字符个数,失败返回EOF。
fread——size_t fread( void *ptr, size_t size, size_t nmemb,FILE *stream);
fwrite——size_t fwrite( const void *ptr, size_t size, size_t nmemb,FILE *stream);
读出或写入数据,ptr为内存不小于size*nmemb的空间,size为元素大小,nmemb为元素个数,stream为文件指针。返回实际
nmemb数目。
ftell——long ftell(FILE *stream);用于得到文件指针当前位置相对于文件头偏移字节数。可用于获取文件大小。
feof——int feof(FILE *stream);用于检测是否读到文件尾,如果未到,返回0,如果到尾部,返回非0。