文件复制后程序出现异常

aahao123 2011-07-07 10:52:40
#include <stdio.h>
#include <time.h>
#include<stdlib.h>
int main ()
{
FILE* out,*in;
time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "The current date time is: %s",asctime (timeinfo) );//成功

char dest[256]={0};
char filename[256] = {0};

sprintf(dest, "%d_%d_%d_%d_%d_%d",
timeinfo->tm_year+1900, timeinfo->tm_mon+1, timeinfo->tm_mday,
timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
sprintf(filename,"d:\\BackUp%s.txt",dest);

out=fopen(filename, "w");
in=fopen("d:\\julu.dat","r");
out=fopen(filename,"w+");
while(!feof(in))
fputc(fgetc(in),out);
fclose(out);
fclose(in);
}


本程序是获得系统的时间,并将“d:\\julu.dat”复制到以系统时间为文件名的txt文件中,运行时程序会停止工作,估计问题出在文件复制上
请问为什么啊?
求大神帮帮帮忙啊
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
socrates 2011-07-08
  • 打赏
  • 举报
回复
程序木有问题,请检查一下D盘下有没有julu.dat这个文件。
至善者善之敌 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aahao123 的回复:]
先谢您了,问题是跟上面的一样,当运行的时候会弹出一个对话框,显示程序已停止
大神啊,再帮帮帮忙吧……

引用 3 楼 babilife 的回复:
是 feof的问题,他会多一次判断所以文件赋值就有问题了

看我的代码

int main ()
{
FILE* out,*in;
time_t rawtime;
struct tm * timeinfo;

time ( &……
[/Quote]

汗。。。我这里VS2005没有问题
aahao123 2011-07-07
  • 打赏
  • 举报
回复
先谢您了,问题是跟上面的一样,当运行的时候会弹出一个对话框,显示程序已停止
大神啊,再帮帮帮忙吧……

[Quote=引用 3 楼 babilife 的回复:]
是 feof的问题,他会多一次判断所以文件赋值就有问题了

看我的代码

int main ()
{
FILE* out,*in;
time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "The curre……
[/Quote]
至善者善之敌 2011-07-07
  • 打赏
  • 举报
回复
是 feof的问题,他会多一次判断所以文件赋值就有问题了

看我的代码

int main ()
{
FILE* out,*in;
time_t rawtime;
struct tm * timeinfo;

time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "The current date time is: %s",asctime (timeinfo) );//成功

char dest[256]={0};
char filename[256] = {0};

sprintf(dest, "%d_%d_%d_%d_%d_%d",
timeinfo->tm_year+1900, timeinfo->tm_mon+1, timeinfo->tm_mday,
timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
sprintf(filename,"d:\\BackUp%s.txt",dest);

out=fopen(filename, "w");
in=fopen("d:\\julu.dat","r");
//out=fopen(filename,"w+");
/*while(!feof(in))
fputc(fgetc(in),out);*/

char ch;
ch = getc(in);
while( ch != EOF ) {
putc( ch, out );
ch = getc( in );
}
fclose(out);
fclose(in);
return 0;
}

aahao123 2011-07-07
  • 打赏
  • 举报
回复
先谢啦啊,用您的方法可以验证fopen是打开了,程序改后out只打开一次
又搞了一下,问题还在,发现问题好像出在
while(!feof(in))
fputc(fgetc(in),out);
fclose(out);
fclose(in);
大神再帮帮忙吧



[Quote=引用 1 楼 yfkiss 的回复:]
1. fopen验证是否真实打开,like:
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}

2. OUT lz打开了两次
out=fopen(filename, "……
[/Quote]
yfk 2011-07-07
  • 打赏
  • 举报
回复
1. fopen验证是否真实打开,like:
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}

2. OUT lz打开了两次
out=fopen(filename, "w");
out=fopen(filename,"w+");

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧