- 论坛徽章:
- 0
|
steves事先写到FILE中_flag和_bufsiz是作者所使用的系统定义的。
在代码5-3实例中也用到这两个成员(暂且说是成员吧,不知道FILE是否是结构体.. )
我使用的是fedora14,有下面几个问题
1.FILE到底该怎么理解(如里面包含了哪些信息等等),百度了一下说是类型名(感觉说了等于没说 ==!),具体要看系统的实现
2.要完成该代码的编译运行,Fedora14中的FILE该怎么取出和作者相同效果的“成员”呢?
代码如下- #include <stdio.h>
- #include <stdlib.h>
- void pr_stdio(const char *, FILE *);
- int main(void)
- {
- FILE *fp;
- fpuc("enter any character\n", stdout);
- if (getchar() == EOF)
- printf("getchar error\n");
- fputs("one line to standard error\n", stderr);
- pr_stdio("stdin", stdin);
- pr_stdio("stdout", stdout);
- pr_stdio("stderr", stderr);
- if ( (fp = fopen("/etc/motd", "r")) == NULL)
- printf("fopen error\n");
- if (getc(fp) == EOF)
- printf("getc error\n");
- pr_stdio("/etc/motd", fp);
- exit(0);
- }
- void pr_stdio(const char *name, FILE *fp)
- {
- printf(" stream = %s, ", name);
- if ( fp->_flag & _IONBF) printf("unbuffered");
- else if ( fp->_flag & _IOLBF) printf
- ("line buffered");
- else printf("fully buffered");
- printf(", buffer size = %d\n", fp->_bufsiz);
- }
复制代码 |
|