LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1286|回复: 15

如何使编译后的程序运行时将源程序原样打印出来

[复制链接]
发表于 2004-3-2 21:15:45 | 显示全部楼层 |阅读模式
RT:help :help
发表于 2004-3-2 21:37:05 | 显示全部楼层
cu上有人问过相同的问题,你去搜索看看。
发表于 2004-3-3 09:13:38 | 显示全部楼层
东北大学bbs上有,你搜一下
 楼主| 发表于 2004-3-3 12:59:58 | 显示全部楼层
谢谢!!!!搜到我就贴到这里!
发表于 2004-3-3 23:08:18 | 显示全部楼层
 楼主| 发表于 2004-3-4 20:42:38 | 显示全部楼层
谢谢大家!!有了答案我就不再找了。我去东北BBS注册,好它说要24后受理。。所以就不贴了。请大家原谅!!
发表于 2004-3-20 16:48:16 | 显示全部楼层
这是我自己写的,好象错误多多哦,
希望大家指正一下。

  1. #include <stdio.h>

  2. #define         BUFSIZE 8124

  3. int main(void)
  4. {
  5.         FILE         *fp;
  6.         int         fd;
  7.         char        buf[BUFSIZE];
  8.         if ((fp=fopen("print.c", "w"))==NULL)
  9.                 printf("can't open file\n");
  10.         while ((fd=read("print.c", buf, BUFSIZE))>0)
  11.                 if (write("print.c", buf, fd)!=fd)
  12.                 printf("write error");
  13.         printf("%s", buf[BUFSIZE]);
  14.         fclose(fp);
  15. }
复制代码

每次编译后,我的print.c就成空的了,不知道怎么是什么原因·!
 楼主| 发表于 2004-3-20 18:02:19 | 显示全部楼层
最初由 wuhu 发表
这是我自己写的,好象错误多多哦,
希望大家指正一下。

  1. #include <stdio.h>

  2. #define         BUFSIZE 8124

  3. int main(void)
  4. {
  5.         FILE         *fp;
  6.         int         fd;
  7.         char        buf[BUFSIZE];
  8.         if ((fp=fopen("print.c", "w"))==NULL)
  9.                 printf("can't open file\n");
  10.         while ((fd=read("print.c", buf, BUFSIZE))>0)
  11.                 if (write("print.c", buf, fd)!=fd)
  12.                 printf("write error");
  13.         printf("%s", buf[BUFSIZE]);
  14.         fclose(fp);
  15. }
复制代码

每次编译后,我的print.c就成空的了,不知道怎么是什么原因·!

函数的用法有很多错误。为什么print.c为空呢?就是你的"w"参数,用这个参数打开文件,文件里的内容是清空的。而又没有写有任何的写入的操作。函数不懂就看man 2 <key>
这是正确的程序,(个人认为),有什么漏洞请大家指出:

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #define         BUFSIZE 8124
  4. int main(void)
  5. {
  6.         int     fd;
  7.         char    buf[BUFSIZE];
  8.         if ((fd=open("print.c", O_RDONLY))<0) {
  9.                 printf("can't open file\n");
  10.                 return(1);
  11.         }
  12.         if(read(fd,buf,BUFSIZE)<0) {
  13.                 printf("read file error\n");
  14.                 return(2);
  15.         }
  16.         puts(buf);
  17.         close(fd);
  18.         return(0);
  19. }
复制代码
发表于 2004-3-20 22:16:20 | 显示全部楼层
谢谢提醒,不过你写的也有错误哦,就是open那行,既然用到了open,怎么没有close(fd)呢?
而且编译后,是read  error,还有warning啊!
偶小鸟,麻烦devel再修改修改,嘿嘿!
 楼主| 发表于 2004-3-20 22:40:35 | 显示全部楼层
:rolleyes: 改好了,还有什么错误,请大家帮看看。:eek: :eek: 这么粗心.但我编译的时候没提示有warning.why?没把警告设到最敏感的级数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表