knowingone 2015-12-26 12:16 采纳率: 66.7%
浏览 1911
已采纳

segment fault:core dumped

程序里有下面两个函数:
小文件没有问题,但是当文件达到1k行左右,会出现段错误。错误在第二个wlhile
语句的fgetc处。
void next(char c,int *row,int *col)
{
if(c == '\t')
*col = (*col + TABLEN - 1) / TABLEN * TABLEN + 1;
else if(c == '\n') {
cur_state.line_endpos[*row] = *col;
*col = 1;
(*row) ++;
}

else
(*col)++;
if(*col > cur_state.win_width)
{

cur_state.line_endpos[*row] = *col - 1;
*col -= cur_state.win_width;
(*row) ++;
}

}

 void state_init()

{
char word;
int cur_row,cur_col;

cur_row = 1;
cur_col = 1;

fseek(FP,0,SEEK_SET);
ioctl(STDIN_FILENO,TIOCGWINSZ,&win);
cur_state.win_height = win.ws_row;
cur_state.win_width = win.ws_col;

while((word = fgetc(FP)) != EOF)
    next(word,&cur_row,&cur_col);
cur_state.total_line =cur_row-1;

memset(&inbuffer,0,sizeof(inbuffer));

}

这个错误很奇怪,我在不断减少行数测试的时候发现在900 多行的时候程序恰好出错,但gdb调试时却正常,较多行时,gdb调试也会出错,何故?

想撞墙。。

  • 写回答

2条回答 默认 最新

  • Robot-C 2015-12-26 12:18
    关注

    最近,写一个二叉树的创建和遍历程序,可以通过编译,但运行时产生了Segment Fault错误。原程序如下:

    struct NODE{
    NODE *lchild, *rchild;
    int data;
    };

    NODE* CreateNode(int i)
    {
    NODE *newnode=new NODE;
    newnode->data = i;
    newn......
    答案就在这里:Segment Fault(core dumped)
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类