当前位置:  技术问答>linux和unix

简单复制程序错误请教

    来源: 互联网  发布时间:2016-12-14

    本文导语:  第30行怎么出现段错误阿,请指教下   1 #include    2 #include    3 #include    4 #include    5    6 int main(int argc, char *argv[])   7 {   8     FILE *fp1, *fp2;   9     int c;  10   11     if(argc != 3)  12   ...

第30行怎么出现段错误阿,请指教下  
1 #include 
  2 #include 
  3 #include 
  4 #include 
  5 
  6 int main(int argc, char *argv[])
  7 {
  8     FILE *fp1, *fp2;
  9     int c;
 10 
 11     if(argc != 3)
 12     {
 13         printf("wrong commandn");
 14         exit(1);
 15     }
 16 
 17     if((fp1 = fopen(argv[1], "rb")) == NULL)
 18     {
 19         perror("fail to open");
 20         exit(1);
 21     }
 22     if((fp2 = fopen(argv[2], "wb")) == NULL)
 23     {
 24         perror("fail to open");
 25         exit(1);
 26     }
 27 
 28     while(c = fgetc(fp1) != EOF)
 29     {
 30         if(fputc(c, fp2) == EOF)
 31         {
 32             perror("fail to write");
 33             exit(1);
 34         }
 35         if(fputc(c, STDOUT_FILENO) == EOF)
 36         {
 37             perror("fail to write");
 38             exit(1);
 39         }
 40 
 41         if(errno != 0)
 42         {
 43             perror("fail to read");
 44             exit(1);
 45         }
 46 
 47         fclose(fp1);
 48         fclose(fp2);
 49 
 50         return 0;
 51     }
 52 }


|
把楼主的代码改了一下,可以复制了,首先3楼说的问题一定要改的,要加上括号。段错误主要是
if(fputc(c, STDOUT_FILENO) == EOF),STDOUT_FILENO要改成stdout,因为是流操作,STDOUT_FILENO是系统调用函数时使用的,不如read、write等,这个编译时有提示warning的。
还有就是那个while的结束不对,楼主的只执行了一次就关闭文件了,要把关闭文件代码放while外面~OK了

|
while( (c = fgetc(fp1) ) != EOF)

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Strings(字符串) 成员 copy():将内容复制为一个字符数组
  • 请问linux复制文件到u盘是复制到硬盘缓存再复制去u盘的吗?
  • photoshop教程 快捷键命令大全表免费下载 快捷键如何设置 复制 放大等
  • 比较难的目录复制,如何原样复制链接符号文件和设备文件?
  • 在Linux中复制文件如何自动跳过那些损坏的无法被复制的文件。
  • 请问UNIX下如何复制目录结构而不复制其中的文件
  • 关于剪贴板(对象的复制、粘贴,而非String的复制、粘贴)
  • oracle复制表结构和复制表数据语句分享
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • cp复制文件时用-a怎么复制过来的文件属性跟原来的还不一样呢?
  • sqlserver 复制表 复制数据库存储过程的方法
  • sql数据库中复制表结构与复制表数据
  • 有关vi的鼠标复制功能
  • 文件复制软件 Copy Handler
  • VI搜索时怎样将复制的内容作为搜索的内容??
  • 链接文件的复制问题,重问
  • 数据库复制引擎 Tungsten Replicator
  • Unix 命令行数据复制程序 ddpt
  • vim打开的文件怎么复制里面的内容啊
  • 急。。。我下载了一个库。如何把头文件复制到系统目录中?
  • 数据同步和复制解决方案 SymmetricDS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3