C语言写文件读取操作

时间:2013.08.23 发布人:wrroaj

C语言写文件读取操作

已解决问题

谷歌wrroaj用户在2013.08.23提交了关于“王仕鹏C语言写文件读取操作”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-28T08:55:00。文件A.txt中有“eth0:192.168.206.139/24;eth1:192.168.301.1/22;eth2:192.168.2.1/23”编写程序放入文件B.txt中
#include<stdio.h>
intmain()
{
FILE*fa,*fb;
charfnameA[]="A.txt";
charfnameB[]="B.txt";
if((fa=fopen(filenameA,"r"))==**LL)
{
printf("error");
exit(0);
}
if((fb=fopen(filenameB,"w+"))==**LL)
{
printf("error");
exit(0);
}
/*========================
请教代码
========================*/
return0;
}希望大家能够帮助她。

详细问题描述及疑问:文件A.txt中有“eth0:192.168.206.139/24;eth1:192.168.301.1/22;eth2:192.168.2.1/23”编写程序放入文件B.txt中
#include<stdio.h>
intmain()
{
FILE*fa,*fb;
charfnameA[]="A.txt";
charfnameB[]="B.txt";
if((fa=fopen(filenameA,"r"))==**LL)
{
printf("error");
exit(0);
}
if((fb=fopen(filenameB,"w+"))==**LL)
{
printf("error");
exit(0);
}
/*========================
请教代码
========================*/
return0;
}期待您的答案,我不知道说什么才好,除了谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:kfjwl3092050  

yeah,终于写出来了,代码有点长,应该能满足你的要求了。有不明白的地方给我留言吧
/*文件A.txt中有“eth0:192.168.206.139/24;
eth1:192.168.301.1/22;eth2:192.168.2.1/23”
编写程序放入文件B.txt不中*/
#include<stdio.h>
#问答include<assert.h>
#include<mal女批开交欢厚谁loc.h>
#include<string.h>
#include<stdlib.h>

#defineMAX_INPUT1024
voidFindIP(char*strDest,char*str衡治没浓武信点们末IP,FILE*fp);
voidreplace(char*s,char*s1,char*s2);
intmain()
{
FILE*fa,*fb;
charfnameA[]="A.txt";
cha洲父出洋rfnameB[]="B.txt";
if((f差a=fopen(fnameA,"r"))==**LL)
{
printf("e石士古片内等强rror");
exi通终创还低比t(0);
}
if(请务东围派六急数热松境(fb=fopen(fnameB,"w+"))==**LL)
{
printf("error");
exit(0);
}

char*strBuf=newchar[MAX_INPUT];
fread(strBuf,MAX_INPUT,1,载探fa);
char*in=newchar[MAX_INPUT];
FindIP(in,strBuf,fb);

printf("%s\n",in);
fclose(fa);
return0;
}

voidFindIP(char*strDest,char*strIP,FILE*fp)
{
assert(strIP!=**LL);
char*address味本=strDest;
memset(addres提动心缺长只味节直海s,0,strle含破沙n(strDest));
inti=0;
for(i=0;*strIP!='\0'要质影服死死;++i)
{
if(*strIP==':')
{
while((*address++=*++strIP)!='/');
}else
{
*strIP++;
}
}

while(*strDest++!='\0')
{
if(*strD业烟本游奏est=='/')
{
replace(strDest,"/","\t\n"设丝许);

}
fputc(*strDest,fp);
}

fclose(fp);

}

voidreplace(纸垂求char*s,char*s1,char*s2)
{
char*p,*sp,*养队获dp;
intlen,cnt;

for(;;)
{
if((p=strstr(s,s1))==**LL)return;

len=strlen(s2)-strlen(s1);
if(len)
{
//查找串和替换串长度不相同,需移位动作
sp=p+strlen(s1);//从sp所指位置移
dp=sp+len;//移到dp所指位置
cnt=strlen(sp)+1;//所要移动的长度
memmove(p+strlen(s1)+len,p+strlen(s1),cnt);
}
memcpy(p,s2,strlen(s2));
}
}