测试标准I/O缓冲的代码,

对普通文件流,标准输入,标准输出及标准错误输出流进行了判断。

在进行判断是,使用了STRUCT_IO_FILE中的_FLAGS成员。

 1 [root@localhost ccode]# vim buff_type_test.c
 2 #include <stdio.h>
 3 
 4 void pr_stdio(const char *, FILE *);
 5 
 6 int main(void)
 7 {
 8     FILE *fp;
 9     fputs("enter andy character\n", stdout);
10     if(getchar() == EOF)
11         printf("getchar error");
12     fputs("one line to standard error\n", stderr);
13     pr_stdio("stdin", stdin);
14     pr_stdio("stdout", stdout);
15     pr_stdio("stderr", stderr);
16 
17     if((fp = fopen("/etc/motd", "r")) == NULL)
18         printf("fopen error");
19     if(fgetc(fp) == EOF)
20         printf("get error");
21     pr_stdio("/etc/motd", fp);
22     return (0);
23 }
24 
25 void pr_stdio(const char *name, FILE *fp)
26 {
27     printf("stream = %s, ", name);
28     if(fp->_flags & _IO_UNBUFFERED)
29         printf("unbuffered");
30     else if(fp->_flags & _IO_LINE_BUF)
31         printf("line buffered");
32     else
33         printf("fully buffered or modified");
34     printf(",buffer size = %d\n", fp->_IO_buf_end - fp->_IO_buf_base);
35 }
36 
37 ~
38 ~
39 ~
40 ~
41 "buff_type_test.c" 35L, 824C written                                                                                                       
42 [root@localhost ccode]# gcc -o buff_type_test buff_type_test.c 
43 [root@localhost ccode]# ./buff_type_test 
44 enter andy character
45 ytuy
46 one line to standard error
47 stream = stdin, line buffered,buffer size = 1024
48 stream = stdout, line buffered,buffer size = 1024
49 stream = stderr, unbuffered,buffer size = 1
50 get errorstream = /etc/motd, fully buffered or modified,buffer size = 4096

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值