|

楼主 |
发表于 2004-3-23 21:27:24
|
显示全部楼层
谢谢libinary!!一直没有注意stdout,stdint,stderr的数据类型是FILE *
把(FILE *)STDOUT_FILENO change to stdout ,上面的程序只能打印出源文件的第一行。
符合要求的程序是这样:
- #include <unistd.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <string.h>
- #include <errno.h>
- #include <stdlib.h>
- #define MAXLINE 8192
- int
- main(void)
- {
- printf("%s\n",__FILE__);
- FILE *fd ;
- char buf[MAXLINE];
- if((fd=fopen(__FILE__,"r"))==NULL) {
- printf("Unable open file : %s\n",strerror(errno));
- return(1);
- }
- while(fgets(buf,MAXLINE,fd) != NULL )
- fputs(buf,stdout);
- fclose(fd);
- return(0);
- }
复制代码 |
|