1.sprintf
函数原型:int sprintf(char *string,char *format,[argument,...]);
sprintf函数说明:字符串格式化命令,主要功能是将格式化数据写入某个字符串中,即发送格式化输出到string所指向的字符串。
函数返回值:字符串长度
eg:sprintf(s,"%s%d%c","test",1,'2'); /*即把后面的参数按照指定格式输入到字符串s中*/
包含头文件:<stdio.h>
注意:sprintf是一个变参函数,使用sprintf对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用snpintf函数,该函数对可写入的字符数做出了限制。
2.snprintf
函数原型:int snprintf(char *str,size_t size,const char *format,[argument...])
snprintf函数说明:将可变参数按照format的格式格式化为字符串,拷贝到str中,至多拷贝size - 1个字符到目标串中,然后再在后面加一个0。
函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。
eg:char a='a';
char str[3];
snprintf(str,sizeof(str),"%02x",a);
包含头文件:<stdio.h>
3.fseek
函数原型:fseek(FILE *stream,long offset,int fromwhere)
fseek函数说明:设置文件指针stream的位置。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。
如果执行失败(比如offset取值大于2*1024*1024*1024,即long的正数取值范围2G),则不改变stream的指向,函数返回一个非0值。
函数返回值:0或非0
eg:fseek(fp,50L,0) 或者fseek(fp,50L, SEEK_SET) /*将位置指针移到离文件头50个字节处*/
包含头文件:<stdio.h>
4.fread
函数原型:fread(void *ptr,size_t size,size_t number,FILE *stream)
fread函数说明:从给定输入流stream读取最多count个对象到数组ptr中(相当于对每个对象调用count次fgetc)
ptr -- 这是指向带有最小尺寸 size*number 字节的内存块的指针。
size -- 这是要读取的每个元素的大小,以字节为单位。
number -- 这是元素的个数,每个元素的大小为 size 字节。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。
函数返回值:成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 number 参数不同,则可能发生了一个错误或者到达了文件末尾。
eg:(摘自网络,具体链接参考:https://www.runoob.com/cprogramming/c-function-fread.html)
包含头文件:<stdio.h>
5.memcpy
函数原型:void *memcpy(void *destin,void *source,unsigned n)
memcpy函数说明:函数的功能是从源内存地址的起始位置开始拷贝若干字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。
函数返回值:函数返回指向dest的指针
eg:char *s="Hello World";
char d[20];
memcpy(d,s,(strlen(s)+1));
包含头文件:<string.h>
拓展:strcpy和memcpy的区别,主要有以下三个方面:
1.复制的内容不同,strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组,整型,结构体,类等。
2.复制的方法不同,strcpy不需要指定长度,它遇到被复制字符串结束符' '才结束,所以容易溢出。memcpy是根据其第三个参数决定复制的长度。
3.用途不同,通常再复制字符串时用strcpy,而需要复制其他数据时,则一般用memcpy。