读书人

在一行一行地读文件然后一行一行地预

发布时间: 2012-03-17 19:06:28 作者: rapoo

在一行一行地读文件,然后一行一行地预处理一下,但是读到100多行时就死在循环里面,原文件300多行
不知道到底怎么搞的,在VC6.0时测试时断言错误,在linux下出现段错误?死在那个while循环里面,读了159行左右就死掉了,原文件大哥300行,程序如下

C/C++ code
#include<string.h>#include<stdlib.h>#include<stdio.h>//#include<unistd.h>int main(){    FILE *fin,*fin1,*fout1,*fout2;    char  buf[1024],bu_f[1024];    char *buf1=NULL;    char *buf_0x=NULL;    if((fin=fopen("c:\\debug_ch1.txt","r"))==NULL)    {        printf("cannot open the file\n");        exit(0);    }   if((fout1=fopen("debug_ch_re.txt","w"))==NULL)   {        printf("cannot open  outfile\n");       exit(0);   }     printf("hah!\n");  //fgets(buf,1024,in);int n=0;  while(!feof(fin))  { //  fgets(buf,1024,fin) ;  printf("gegeg!\n");fgets(buf,1024,fin); printf("%d\n",++n);   //       if(buf[strlen(buf)-1]=='\n') buf[strlen(buf)]=' ';        //   printf("goo!");      if(strstr(buf,"DrawLine")!=NULL) continue;      if((buf1=strstr(buf,"recv from comm:"))!=NULL) buf1+=strlen("recv from comm:");        fputs(buf1,fout1);//printf("oooooo1111\n");      //fputs("\n",out1);       }printf("%s",buf);  printf("%d\n",n);   fclose(fin);   fclose(fout1); /* if((fout2=fopen("debug_ch_revise.txt","w"))==NULL)  {  printf("cannot open the file\n");  exit(0);  }  printf("11111\n"); /* if((fin1=fopen("debug_ch_re.txt","r"))==NULL)   {       printf("cannot open  outfile\n");       exit(0);   }*///printf("222222222222\n");/*while(!feof(fin1)){  printf("sadffqwe\n");  fgets(bu_f,1024,fin1);  printf("dsfdgggggggggwr\n"); if(buf[strlen(bu_f)-1]=='\n') buf[strlen(bu_f)]=' '; if(buf_0x=strstr(bu_f,"0x3 ")){ buf_0x+=4; *buf_0x='\n';} fputs(bu_f,fout2);}*///fclose(fin);//fclose(fout2);  return 0;}


贴在不能发太长,我只能把debug_ch1.txt的形式发出来
recv from comm:0x2 0x48 0x30 0x31 0x30 0x32 0x3 0x2 0x48 0x30 0x35 0x30 0x30 0x3 0x2 0x48
DrawLine:C冻,190, 300, 179, 54, 179, 289
大概每行要么是recv from comm:0x2 0x48 0x30 0x31 0x30 0x32 0x3 0x2 0x48 0x30 0x35 0x30 0x30 0x3 0x2 0x48
要么是有DrawLine:C冻,190, 300, 179, 54, 179, 289组成,当然每次接受数字可能有的行比较长,,有的比较短
但是不知道这个到底是怎么回事,请大牛出马帮帮我把

[解决办法]
又是一个没fgets就判断eof的孩子.
[解决办法]
把缓冲区的大小
char buf[1024],bu_f[1024];
调大一点试试,有可能是在159行的时候缓冲区大小不够了

读书人网 >C++

热点推荐