对文件的同步,没什么好的简单的实现方法,最笨的方法就是读文件中的数据来判断是否是写还是读,下面本人写了个简单的程序:
程序1:
#include
#include
#include
#pragma comment(lib,"Winmm.lib")
struct Parameter
{
int name;
int age;
int number;
char ch;
}Parameter[1];
void main()
{
long n=10000000*5;
FILE * fp;
FILE * f;
Parameter[0].name=1;
Parameter[0].age=2;
Parameter[0].number=3;
Parameter[0].ch='a';
fp=fopen("../bao.txt","r+");
fprintf(fp,"%d %d %d %c",Parameter[0].name,Parameter[0].age,Parameter[0].number,Parameter[0].ch);
fclose(fp);
while(n-->=0)
{
fp=fopen("../bao.txt","r+");
f=fopen("../baoqunmin.txt","a+");
rewind(fp);
fscanf(fp,"%d %d %d %c",&Parameter[0].name,&Parameter[0].age,&Parameter[0].number,&Parameter[0].ch);
if(Parameter[0].ch=='z')
{
fprintf(f,"%d %d %d %c",Parameter[0].name,Parameter[0].age,Parameter[0].number,Parameter[0].ch);
Parameter[0].ch='a';
rewind(fp);
fprintf(fp,"%d %d %d %c",Parameter[0].name,Parameter[0].age,Parameter[0].number,Parameter[0].ch);
}
fclose(fp);
fclose(f);
}
}
程序2:
#include
#include
#include
struct Parameter
{
int name;
int age;
int number;
char ch;
}Parameter[1];
void main()
{
unsigned long m=1000;
long n=10000000*5;
FILE * fp;
FILE * fq;
while(n-->=0)
{
fq=fopen("../baomin.txt","a+");
fp=fopen("../bao.txt","r+");
rewind(fp);
fscanf(fp,"%d %d %d %c",&Parameter[0].name,&Parameter[0].age,&Parameter[0].number,&Parameter[0].ch);
if(Parameter[0].ch=='a')
{
fprintf(fq,"%d %d %d %c",Parameter[0].name,Parameter[0].age,Parameter[0].number,Parameter[0].ch);
Sleep(m);
Parameter[0].ch='z';
rewind(fp);
fprintf(fp,"%d %d %d %c",Parameter[0].name,Parameter[0].age,Parameter[0].number,Parameter[0].ch);
}
fclose(fp);
fclose(fq);
}
}
以上程序就可完成,一次读,一次写了!
阅读(1137) | 评论(0) | 转发(0) |