当我的文本文件包含超过限制的字符时,接收信号SIGTRAP

时间:2014-05-12 15:53:28

标签: c

我是C的新手,我无法解决这个问题。当我在文本文件上写入超过27个字符时,我收到信号SIGTRAP。跟踪/断点陷阱。 我在网吧电脑窗口7上用Dev-C ++编译。文本文件参赛:Dinosaurs are a diverse group of animals of the clade Dinosauria

int main(int argc, char *argv[]) { 
   FILE *myinput; 
   char **arr, **temp;
   char string[50];
   int i,j,wrd;

   arr=NULL;
   temp=NULL;
   i=0;
   myinput = fopen("word.txt", "r");
   while(1)
   {
     wrd = fscanf(myinput, "%s",string);
     if(!(wrd>0))
     {
       break;
     }
     temp=(char **)realloc(arr,i+1);
     arr=temp;
     arr[i]=(char *)malloc(sizeof(char)*(strlen(string)+1));
     strcpy(arr[i],string);
     i++; //counting words in a line from txt file.
   }
   for(j=0;j<i; j++)
   {
    printf("%s ", arr[j]);
   }
   free(arr);
return 0;   
}

1 个答案:

答案 0 :(得分:0)

你的realloc()函数有一个不正确的参数:size。你应该将指针的大小分配给数字i,但是你只分配i。

temp=(char **)realloc(arr, sizeof( char* ) * (i+1) );

剩下的唯一问题可能是你没有包含必要的标题。