- 论坛徽章:
- 0
|
正在看《UNIX环境高级编程》这本书,写了一个小程序联系联系。
不过出现了一个让我摸不着头脑的小问题:
- #include <stdio.h>
- #include <errno.h>
- #define MAXLINE 32
- int main(int argc,char **argv)
- {
- FILE *fp;
- char buf[MAXLINE],tmpbuf[MAXLINE];
- char *Path;
-
- if(argc != 2){
- printf("usage: ./test pathname\n");
- return -1;
- }
-
- sprintf(tmpbuf,"%s/shiner/%s",getenv("HOME"),argv[1]);
- Path = tmpbuf;
-
- if((fp = fopen(Path,"r+")) == NULL){
- printf("fopen error: %s\n",strerror(errno));
- return -1;
- }
-
- if(fread(buf,sizeof(char),MAXLINE,fp) != MAXLINE){
- printf("fread error: %s\n",strerror(errno));
- return -1;
- }
-
- printf("read buf from %s is: %s\n",argv[1],buf);
- return 0;
- }
复制代码
用fread 从指定文件里读出长度32位的字符放到buf里,用printf 打印出来后除了正常所需要的32位字符外后面竟然有一些乱码一样的东西也打印在屏幕上。如:
read buf from myfile is: ASDFGHJKLQWERTYUIOZXCVBNMSDFGHJKh?縺??
B樻 |
|