两个文件存号码 几百兆 找到交集 并存到新文件

两个文件存号码 几百兆 找到交集 并存到新文件,第1张

采用bitset进行问题解决

因为int的最大数是2^32-1==约43亿,用一个二进制的下标来表示一个int值,大概需要43亿个bit位,即约43亿/8=5.4亿Byte,即约540M的内存。这可以解决问题了。

1.首先遍历文件,将每个文件按照数字的正数负数标记到2个BitSet上为:正数BitSetA_positive,负数BitSetA_negative

2.遍历另为一个文件,生成正数:BitSetB_positive,BitSetB_negative

3.取BitSetA_positiveandBitSetB_positive得到2个文件的正数的交集,同理得到负数的交集。

4.合并,问题解决。

#define N 1000

#include<stdio.h>

void fun(char *a,char *b,char *c,char *d,char *f)

{while(*(a++)||*(b++))

{if(*a=*b)

{*c=*a

c++}

else

{*(d++)=*a

*(f++)=*b

}

*c=*d=*f='\0'

}

return

}

void main()

{char a[N],b[N],c[N],d[N],f[N]

FILE *fp,*fv,*fs,*fn

fp=fopen("F:\\332result.txt","r")

fv=fopen("F:\\336result.txt","r")

fs=fopen("F:\\random.txt","w")

fn=fopen("F:\\random1.txt","w")

fgets(a,fp)

fgets(b,fv)

fun(a,b)

fputs(c,fs)

fputs(d,fn)

fputs(f,fn)

fclose(fp)

fclose(fv)

fclose(fn)

fclose(fs)

}

ps:懒得调试了,我刚学完C语言没多久,还不是很行,望采纳,我好升级,嘿嘿。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11868487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存