永发信息网

跪求程序改错,怎么看都没问题呀,只会一些些C语言呜呜呜

答案:1  悬赏:80  手机版
解决时间 2021-04-02 02:13
  • 提问者网友:龅牙恐龙妹
  • 2021-04-01 02:56
跪求程序改错,怎么看都没问题呀,只会一些些C语言呜呜呜
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-04-01 03:29
#include
#include
#include
char FormatFind(FILE *fpIn,long *PfOffset,long *PfLength);
void FormatPrint(FILE *fpIn,FILE *fpOut,long PfOffset,long PfLength);
void main(){
FILE *fpIn,*fpOut;
long PfOffset = 0,PfLength = 0;
if( (fpIn = fopen("d:\\1.txt","r")) == NULL)
{
printf("文件不存在");
exit(0);
}
fpOut = fopen("d:\\2.txt","w");
printf("开始查找...\n");
if( FormatFind(fpIn,&PfOffset,&PfLength) )//查找格式匹配的内容是否存在
{
printf("文本中发现匹配内容,内容长度为%ld字节\n",PfLength);
printf("开始拷贝...\n");
FormatPrint(fpIn,fpOut,PfOffset,PfLength);//将格式匹配内容存盘
printf("OK");
}
else
{
printf("文本中没有匹配内容");
}
fclose(fpIn);
fclose(fpOut);
}
char FormatFind(FILE *fpIn,long *PfOffset,long *PfLength)
{
char ch;
char match =0;
*PfLength = 0;
while(feof(fpIn) == 0) //当未达文件队尾
{
ch = getc(fpIn);
switch(match)
{//trans=/"
case 0:
if(ch == 't')
match = 1;
break;
case 1:
if(ch == 'r')
match = 2;
else
match =0;
break;
case 2:
if(ch == 'a')
match = 3;
else
match = 0;
break;
case 3:
if(ch == 'n')
match = 4;
else
match = 0;
break;
case 4:
if(ch == 's')
match = 5;
else
match = 0;
break;
case 5:
if(ch == '=')
match = 6;
else
match = 0;
break;
case 6:
if(ch == '/')
match = 7;
else
match = 0;
break;
case 7:
if(ch == '\"')
match = 99;
else
match = 0;
break;
case 99:
*PfOffset = ftell(fpIn) - 1;
match = 100;
break;
case 100:
(*PfLength)++;
if(ch == '\"')
return 1;
default:break;
}
}
return 0;
}
void FormatPrint(FILE *fpIn,FILE *fpOut,long PfOffset,long PfLength)
{
char ch;
fseek(fpIn,PfOffset,SEEK_SET);
while(PfLength > 0)
{
ch = getc(fpIn);
putc(ch,fpOut);
PfLength--;
}
}
在vs2008运行通过。你的源程序主要是头文件的问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯