回 帖 发 新 帖 刷新版面

主题:文件的简单复制,却执行不下去

#include "stdio.h"
 #include "stdlib.h"
 main()
 { FILE *f,*s;
   int i;
   if((f=fopen("a.txt","w"))==NULL)/* 以W 的方式打开文件,进行写入*/
   { printf("shi bai :\n");
    exit(0);
   }
   scanf("%d",&i);
    while(i!=0)
  { putw(i,f);
    scanf("%d",&i);/* 将整数写入的文件F中*/
   }
    fclose(f);/*关闭文件*/
   if((f=fopen("a.txt","r"))==NULL)/*然后以r的形式打开文件*/
   { printf("shi bai :\n");
    exit(0);
   }
   if((s=fopen("a.txt","w"))==NULL)/*用w的形式打开s指向的文件*/
   { printf("shi bai :\n");
    exit(0);
   }  
  i=getw(f);       /*从f中去元素i*/
  while(i!=EOF)
  { putw(i,s);  /*将i写入到s所指向的文件中*/
   i=getw(f);
  }
  fclose(f);
  fclose(s);/*关闭这两个,现在s所指向的文件中应该有了f中的值了????*/
  printf("\n kai shi shu chu :\n");
  if((s=fopen("a.txt","r"))==NULL)/*用读的方式打开文件,
   { printf("shi bai :\n");          读出文件的内部的值*/
    exit(0);
   } 
   i=getw(s);
   while(i!=EOF)
  {printf("%4d",i);
   i=getw(s);
  }
 fclose(s);
 getch();
}
请先看一遍程序,意思是,建立一个文件,输入数字,然后再把这个文件打开,将元素输出到另外的一个s所指向的文件中,然后再输出s的内容,但是,却不正确了,恩,就是说在输入的时候吧,可以,但是在输出时候就是不可以了,不知道为什么程序死机了。。。求救,,到底是哪里的 错 ,?

回复列表 (共3个回复)

沙发

if((f=fopen("a.txt","r"))==NULL)/*然后以r的形式打开文件*/
   { printf("shi bai :\n");
    exit(0);
   }
   if((s=fopen("a.txt","w"))==NULL)/*用w的形式打开s指向的文件*/
   { printf("shi bai :\n");
    exit(0);
   }  

同时对一个文件进行读、写得动作,应该会有问题的吧?

板凳

同时对一个文件进行IO操作,文件指针会怎么变化呢?LZ考虑过没基本上,就是读了一行,然后写进去了,这时候文件指针指回原位了,结果又重新读出这一行重新写进去,自然是个死循环。
如果我的理解没错误的话,lz可以尝试在  { putw(i,s);  /*将i写入到s所指向的文件中*/
   i=getw(f);
这两句中间加上puts(i);,应该能看到无数次重复输出文件第一行

3 楼


晕,,,了,我怎么没看到啊,咳,不小心啊,不细心啊 ,,丢人啊,,,咳,,,

我来回复

您尚未登录,请登录后再回复。点此登录或注册