- 論壇徽章:
- 0
|
我有一個(gè)文件a.txt, 我想在最后一個(gè)[bbb]中插入字符串ddd,結(jié)果始終不對。各位大蝦能否幫忙看看。
jfdkfjkd
[bbb]
[bbb]
[bbb]
ccc
kldfd
函數(shù)如下:
void iststr(char *fname, char *fstr, char *istr, char *awstr)
{
FILE *dat;
long int k,j,i=0;
int count=0;
int flag=0;
int findflag=0;
int strcount=0;
char filepath[50];
char *insertstr=NULL;
char *input=NULL;
char tmp[1024];
char *head,*tail=NULL;
strcpy(filepath,fname);
input = (char *)malloc(strlen(fstr)+1);
strcpy(input,fstr);
insertstr = (char *)malloc(strlen(istr)+1);
strcpy(insertstr,istr);
dat=fopen(filepath,"rt");
if(dat==NULL)
{
printf("打開文件失敗!");
return;
}
while(!feof(dat))
{
fgets(tmp,150,dat);
count++;
if (strstr(tmp, awstr)!=NULL)
{
flag=1;
}
if (1 == flag)
{
if (strstr(tmp, input)!=NULL)
{
findflag=1;
i=ftell(dat);
// strcount++;
}
if (strstr(tmp, "return")!=NULL)
{
break;
}
}
}
flag = 0;
if(0==findflag)
{
MessageBox("未找到插入字符串!!");
return;
}
i=i-count+4;
head = (char *)malloc(i+1);
fseek(dat,0,SEEK_END);
j = ftell(dat);
j = j-i;
tail = (char *)malloc(j+1);
fseek(dat,0,0);
for(k=0;k<i;k++)
{
head[k]=fgetc(dat);
}
head[k]='\0';
for(k=0;k<j;k++)
{
tail[k]=fgetc(dat);
if(tail[k]==-1) break;
}
tail[k]='\0';
fclose(dat);
dat=fopen(filepath,"wt+");
fputs(head,dat);
fputs(insertstr,dat);
fputs("\n",dat);
i = strlen(tail);
for(k=0;k < i;k++)
{
fputc(tail[k],dat);
}
tail[k]='\0';
fclose(dat);
free(head);
free(tail);
free(insertstr);
free(input);
} |
|