gpt4 book ai didi

c - 下面的代码有什么问题?(在c中的文件管理中)

转载 作者:行者123 更新时间:2023-11-30 20:13:41 25 4
gpt4 key购买 nike

#include <stdio.h>
main()
{
FILE *f1,*f2,*f3;
int number,i;
printf("content of data file\n\n");
f1 =fopen("data","w");
for(i=0;i<20;i++)
{
scanf("%d",&number);
if(number==-1)
break;
putw(number,f1);
}
fclose(f1);
f1=fopen("data","r");
f2=fopen("odd","w");
f3=fopen("even","w");
while((number=getw(f1))!=EOF)
{
if(number%2==0)
putw(number,f3);
else
{
putw(number,f2);
}
fclose(f1);
fclose(f2);
fclose(f3);
f2=fopen("odd","r");
f3=fopen("even","r");
printf("\n\ncontent of odd file\n\n");
while((number=getw(f2))!=EOF)
printf("%4d",number);
printf("\n\ncontent of even number\n\n");
while((number=getw(f3))!=EOF)
printf("%4d",number);
}
}

我理解了整个程序,但是我的编译器没有给出正确的答案,我正在使用代码块。代码有什么问题,文件管理程序都无法正常工作吗?为什么?

最佳答案

你有:

while((number=getw(f1))!=EOF)
{
if(number%2==0)
putw(number,f3);
else
{
putw(number,f2);
}
fclose(f1);
fclose(f2);
fclose(f3);

这是过早关闭文件。下次调用 getw(f1) 将出现问题 - 这是未定义的行为。

然后你就进入了同样的循环。

    f2=fopen("odd","r");
f3=fopen("even","r");

现在f2f3不能用来写入。

尝试:

while((number=getw(f1))!=EOF)
{
if(number%2==0)
putw(number,f3);
else
{
putw(number,f2);
}
}

// Now you can safely close the files.
fclose(f1);
fclose(f2);
fclose(f3);

// Reopen the files in read mode to examine their contents.
f2=fopen("odd","r");
f3=fopen("even","r");

关于c - 下面的代码有什么问题?(在c中的文件管理中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com