《网络编程》- 第15章 – 套接字和标准 I/O

1、标准 I/O函数和系统函数

系统读写函数:read()、write()

标准I/O函数:fgets()、fputs()

系统读写函数不带缓冲区,而标准I/O函数自带缓冲区。

在读写比较大的文件的时候,标准I/O函数更快。

【辨】

系统函数 读写的输入是:文件描述符;

标准I/O函数 读写的输入是:FILE 结构体指针。

2、使用标准 I/O 函数

函数 fgets();

#include <stdio.h>

int fgetc(FILE *stream);

char *fgets(char *s, int size, FILE *stream);

函数 fputs();

#include <stdio.h>

int fputc(int c, FILE *stream);

int fputs(const char *s, FILE *stream);

​ 若 stream 写 stdout, 则直接输出到终端。

函数 fdopen()

#include <stdio.h>

FILE *fdopen( int fildes, const char *mode );

功能:

​ 将创建套接字时返回的文件描述符转换为标准I/O函数中使用的 FILE结构体指针。

参数:

​ fildes:需要转换的文件描述符

​ mode:将要创建的 FILE结构体指针的模式(mode)信息;

​ “r” :读模式

​ “w” :写模式。

返回值:

​ 成功,返回转换的FILE结构体指针;失败,返回NULL。

函数 fileno()

#include <stdio.h>

int fileno( FILE *stream );

功能:

​ (与 fdopen() 相反)FILE结构体指针转换为套接字。

参数:

​ stream:FILE结构体指针

返回值:

​ 成功,返回转换后的文件描述符;失败,返回-1。

3、习题

1)请说明标准I/O函数的2个优点。它为何拥有这2个优点?

答:

基于ANSIX标准具有良好的一致性;

可以利用缓冲提高性能。

2)标准IO中,“调用fputs函数传输数据时,调用后应立即开始发送!”,为何这种想法是错误的?为了达到这种效果应添加哪些处理过程?

答:

通过标准输出函数的传输的数据不直接通过套接字的输出缓冲区发送,而是保存在标准输出函数的缓冲中,然后再用fflush函数进行输出。因此,即使调用“fputs"函数,也不能立即发送数据。如果想保障数据传输的时效性,必须经过fflush函数的调用过程。

代码入口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值