C语言 两个txt文件操作小程序 求代码!!100分

是这样的,有两个txt文档,假如一个叫A,另一个叫B
目的是从B中读取每一行的内容与A中的相比较,如果有一样的,就把A中的该行删除,下一行往上前进一行,不留空行
数据比较多,一次大概处理几十个几百个,最多几千个,程序慢一点没有事,只要准确
会做的高人帮我编写一下,程序很简单,这个分,你很容易得。
悬赏100,采纳的时候会追加50
文档中数据的形似如下:
daofan520:2788743
tj7621498:841900we
alanxzj:kissdee
前面的有汉字的,有字母数字组合的,后面的是纯字母,纯数字,和字母数字组合的形式
请速度解决
程序贴出来,或者发我邮箱都可以:815956227@qq.com
多谢
新年快乐

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
FILE *fpa,*fpb,*fpc;
char k[300]={0},kk[300]={0}; //k是b里的字符串,kk是a里的字符串
fpa=fopen("a.txt","r");
fpb=fopen("b.txt","r");
fpc=fopen("c.txt","w"); //先把内容存在文件c里,再转到a里面
if(fpa==NULL||fpb==NULL)
{
printf("打开文件失败\n");
printf("请确认你是否已新建好\"a.txt\"和\"b.txt\"\n");
return;
}
fscanf(fpb,"%s",k);
fscanf(fpa,"%s",kk);
while(kk[0]!='\0') //开始删除字符串
{
if(strcmp(kk,k)!=0) /* 无相同内容 */
{
fprintf(fpc,"%s\n",kk);
}
memset(kk,0,sizeof(kk));
fscanf(fpa,"%s",kk);
}
fclose(fpa);
fclose(fpb);
fclose(fpc);
fpc=fopen("c.txt","r");
fpa=fopen("a.txt","w");
memset(kk,0,sizeof(kk));
fscanf(fpc,"%s",kk);
while(kk[0]!='\0') //开始转到a里面
{
fprintf(fpa,"%s\n",kk);
memset(kk,0,sizeof(kk));
fscanf(fpc,"%s",kk);
}
fclose(fpc);
system("del c.txt"); //把新建的c.txt删掉
printf("已完成\n");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-09
/* 假设原来的文件是a.txt和b.txt */
/* 这里假设a.txt和b.txt文件不大,每个文件最多300行,每行最多100个字符 */
/* 在另一个程序给了大文件的处理程序 */
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MaxR 300
#define MaxL 100
char stra[MaxR][MaxL],strb[MaxR][MaxL];
int atrnum[MaxR]={0};
void main()
{
FILE *fp;
int i,j,k,a=0,b=0;/* a,b是文件实际行数 */

if((fp=fopen("a.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(stra[a],100,fp)) /*读取a.txt一行,并判断文件是否结束 */
{
a++;
if(a>=MaxR)break;
}
fclose(fp);

if((fp=fopen("b.txt","rt"))==NULL)
{
printf("cannot open file\n");
return;
}
while (fgets(strb[b],100,fp)) /*读取b.txt一行,并判断文件是否结束 */
{
b++;
if(b>=MaxR)break;
}
fclose(fp);
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{
if(strcmp(stra[i],strb[j])==0)/* 有相同内容 */
{
atrnum[i]=1;
break;
}
}

if((fp=fopen("a.txt","wt"))==NULL)
{
printf("cannot open file\b");
return;
}
for(i=0;i<a;i++)
if(atrnum[i]==0)fprintf(fp,"%s",stra[i]);/* 没有相同内容,写入文件 */
fclose(fp);
}
第2个回答  2013-02-09
你这个说实在的还真不简单,我尽量给你弄出来,我调试好后发你邮箱!追问

恩恩 好的 如果你能做出来 我再增加100分悬赏 一次性给你250分,敬候佳音

追答

呵呵你这个分不太好吧。

C语言中,把数据储存在txt文件中的代码怎么写的?
下面的C语言程序源程序展示了合并A.txt和B.txt两个TXT文件的内容存储到到新建的一个TXT文件,C.txt。include <stdio.h>#include <stdlib.h>using namespace std;typedef struct Student { char name[32]; char sex[6]; int age; float score;} stu;int main(int argc, char* a...

用C语言写一个小程序(一个小功能就可以了),要求:100行代码左右,不要太...
case 2:printf("请输入起始站:\\n"); scanf("%s",x[0].name1);\/\/读取起始站 printf("请输入终点站:\\n"); scanf("%s",x[0].name2);\/\/读取终点站 break; } for(i=0;i<m;i++) { if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)\/\/判断输出条件 { ...

如下小程序,c语言从TXT文件中读取数据并显示,运行结果怎么不对呢...
main(){ FILE *fp;int a,b;\/\/rewind(fp); \/\/delete if ((fp=fopen("abc.txt","r+"))==NULL){ printf("cannot open this file!\\n");exit(0);} fscanf(fp,"%d,%d",&a,&b);printf("%d,%d\\n",a,b); \/\/change getch();} ...

求C语言小程序源代码,300行左右
int a[8][8]={0},key,score1,score2;\/*具体分数以及按键与存放棋子的变量*\/char playone[3],playtwo[3];\/*两个人的得分转换成字符串输出*\/void playtoplay(void);\/*人人对战函数*\/void DrawQp(void);\/*画棋盘函数*\/void SetPlayColor(int x);\/*设置棋子第一次的颜色*\/void MoveColor(int x,int...

求一个用C语言编写的小游戏代码
这是一个类似贪吃蛇的小游戏。祝你好运*\/\/*贪吃蛇*\/#include<stdio.h>#include#include<conio.h>#include<stdlib.h>int head=3 ,tail=0;int main(){ int i,j,k=0; int zuobiao[2][80]; long start; int direction=77; int gamespeed; int timeover; int change(char qipan[20][80],int zuobia...

c语言实现读取txt文件数据存入结构数组中 求大神看看我的代码有什么问题...
智能小程序[最佳答案]根据txt文件中数据的格式,可以用fscanf把数据读取到数组中。 下面以一种最基本的情况为例,给出参考代码。 假定结构体格式为 struct test{ int...

C语言高手来一下帮我编个小程序
首先,我可以用字符串来做。我现在先把代码贴上:include <stdio.h> int main(){ char *str , *ch , *c[] = {"个位为:" , "十位为:" , "百位为:" , "千位为:" , "万位为:"};scanf("%s",str);int i = 0 ;\/\/要求1.求出它是几位数 printf("此数为%d位数\\n",(size...

谁能用C语言帮我写几个小程序 急求
d=max(a,b,c); \/\/输入的是abc,不是x,y,z\/\/x,y,z是形参a,b,c是实参 printf("max=%d",d);\/\/不是print是printf return 0;} int max(int x,int y,int z){ return(x>y?(x>z?x:z):(y>z?y:z));} 2、include<stdio.h> int main(){ int a,b,num1,num2,temp;printf...

c 语言,小程序求解。比较ab两个单元的大小。
在C语言中,函数参数采用“值传递”方法,一旦函数执行完毕,存储单元所保存的值不再保留。形式参数是函数的局部变量,只在函数内部才有意义,不能用它来传递函数的结果。即,被调用的函数不可能改变主函数中变量的值,而只能改变它的局部的临时副本。所以这种情况只能用传递地址的方式来完成交换。

求c语言大佬帮助!帮我写个小程序,谢谢
int n);\/\/在屏幕上输出数组各元素的值(逗号分隔)#define N (10)int main(){ int a[N],b[N],c[N*2],i; srand(time(NULL)); Init(a,N); Print(a,N); Short(a,N); Print(a,N); Init(b,N); Print(b,N); Short(...

相似回答