和代码应该没有太大关系
下面是建立一个二进制文件“file1.bin”的程序,向其中写入一些整形数,然后将该文件内容复制到另一个文件中“file2.bin”。程序rwbfile.c的代码如下
# include <stdio.h>
# include <stdlib.h>
# include <sys/types.h>
# include <sys/stat.h>
# include <unistd.h>
# include <fcntl.h>
# include <string.h>
# define NUM 10
# define file1 "file1.bin"
# define file2 "file2.bin"
# define OFFSET 0
int main()
{
FILE * sf,*df;
int rnum = 0;
int data[NUM];
int digit = 0;
int i=0,j=10;
sf =fopen(file1,"w+");
if(sf==0)
{
printf("open file error!\n");
exit(1);
}
for(;j>0;j--)
{
for(i=0;i<NUM;i++)
{
data[i]=digit;
}
digit++;
rnum = fwrite(data,sizeof(int),NUM,sf);
}
df = fopen(file2,"w+");
if(df==0)
{
printf("open file error!\n");
exit(1);
}
fseek(sf,OFFSET,SEEK_SET);
printf("file1:\n");
while((rnum= fread(data,sizeof(int),NUM,sf))> 0)
{
for(i=0;i<rnum;i++)
{
printf("%d",data[i]);
}
printf("\n");
fwrite(data,sizeof(int),rnum,df);
}
fseek(df,OFFSET,SEEK_SET);
printf("file2:\n");
while((rnum = fread(data,sizeof(int),NUM,df))>0)
{
for(i =0;i<rnum;i++)
{
printf("%d",data[i]);
}
printf("\n");
}
fclose(sf);
fclose(df);
return 0;
}
问题是程序运行以后,在磁盘的当前目录下,是否有文件”file1.bin” “file2.bin”产生?如果有,那么他们的内容可以直接读取吗?分析原因。
我查看了是有的,但是看是否可以打开的时候出现了以下问题
问题一与扩展名有关,*.bin是与*.obj类似的编译输出文件,会被系统解释为二进制文件并且需要特殊权限才能打开,一般会被按照二进制数据打开。
问题二与你退出主线程时没有关闭子线程,发生了资源泄漏有关。
抱歉,我需要一个具体的问题才能为您提供解决方案。请问有哪些问题需要解决呢?