区分多种类型的输入输出
1.printf函数
这个就不说了
2.sprintf函数
int sprintf(char *str, const char *format, ...);
- 作用:是把格式化字符串输出到指定字符串,所以参数比printf多了个char * ,那就是目标字符串的地址
- 头文件:stdio.h
- 函数功能:格式化字符串,将格式化的数据写入字符串中
- 参数:(1)str:是char类型的指针,指向写入的字符串指针;
- 参数:(2)format:格式化字符串,即在程序中想要的格式;
- 参数:(3)argument:可选参数,可以为任意类型的数据
- 函数返回值:buffer指向的字符串的长度;
3.fprintf函数
int fprintf(FILE *stream, const char *format, ...);
- 是把格式化字符串输出到指定文件中,所以参数比printf多了个文件指针File * ,那是目标文件的文件描述符(文件流指针)
- stream-- 这是指向 FILE 对象的指针,该 FILE 对象标识了流
- format-- 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。
- format 标签属性是%[flags][width][.precision][length]specifier
[argument]:附加参数列表 - fprintf( )会根据参数format 字符串来转换并格式化数据,然后将结果输出到参数stream
指定的文件中,直到出现字符串结束(’\0’)为止
4.snprintf函数
int snprintf(char *str, size_t size, const char *format, ...);
- 将可变个参数(…)按照format格式化成字符串,然后将其复制到str中
- 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(’\0’);
- 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(’\0’),返回值为欲写入的字符串长度
- 函数返回值
若成功则返回预写入的字符串长度,若出错则返回负值。
与snprintf的返回值不同,sprintf的返回值是成功写入的字符串长度,此处需要谨慎处理。
5.write函数
- 函数定义:
ssize_t write (int fd, const void * buf, size_t count);
- 函数说明:write()会把参数buf所指的内存写入count个字节到参数放到所指的文件内。
- 返回值:如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。
6.read函数
ssize_t read(int fd, void * buf, size_t count);
- 函数说明:read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。
- 返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。
7.fread函数
size_t fread(void*buffer,size_t size,size_t count,FILE*stream);
-
buffer: 是读取的数据存放的内存的指针,
(可以是数组,也可以是新开辟的空间)
ps: 是一个指向用于保存数据的内存位置的指针(为指向缓冲区
保存或读取的数据或者是用于接收数据的内存地址) -
size: 是每次读取的字节数
-
count: 是读取的次数
-
stream: 是要读取的文件的指针
ps: 是数据读取的流(输入流) -
返回值
成功:是实际读取的元素(并非字节)数目
失败:返回0
ps:如果输入过程中遇到了文件尾或者输出过程中出现了错误,这个数字可能比请求的元素数目要小
8.fwrite函数
size_t fwrite(void*buffer,size_ size,size_t count,FILE*stream)
- buffer:是一个指向用于保存数据的内存位置的指针
(是一个指针,对于fwrite来说,是要获取数据的地址) - size: 是每次读取的字节数
- count: 是读取的次数
- stream: 是数据写入的流(目标指针的文件)
- 返回值:
是实际写入的元素(并非字节)数目
ps:如果输入过程中遇到了文件尾或者输出过程中出现了失误,这个数字可能比请求的元素数目要小