| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:请帮忙看看这是怎么回事,怎么一用 a=a->next就出现core dumped
只看楼主 加入收藏
神的弃物
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2009-8-7
结帖率:100%
收藏
 问题点数:0 回复次数:3 
请帮忙看看这是怎么回事,怎么一用 a=a->next就出现core dumped
typedef struct mailNode MailNode;

struct mailNode {
  int   msgNum;
  char *from;
  char *to;
  char *subject;
  char *date;
  char *messageId;
  char *inReplyTo;
  enum statusCode status;
  enum priorityCode priority;
  char *content;
  int year, month, day;
  int hour, minute, second;
  MailNode *next;
  MailNode *revNext;
};

int main(int argc, char* argv[])
{
  MailNode *messageList = NULL; // list of messages

  FILE *fp = NULL;
  int i=0;
  char c;
  char command[MAXLLENGTH];  // mail client command

  if (argc != 2) { // Check for correct usage
    fprintf(stderr, "Usage: %s file\n", argv[0]);
    exit(1);
  }

  fp = openMailbox(argv[1]); // open mailbox file


  while (i<7){
  messageList = getNextMessage(fp);
  messageList= messageList->next;   //我可以把这个放到关文件之后,但为什么这里不能用next?我怎么才能实现让messageList复制所有getNextMessage(fp)的值?   (另外getNextMessage(fp)这个函数是之前就提供的,并且不能改的。所以应该不是getNextMessage(fp)的问题。而且每次用getNextMessage(fp),指针自动+1)
   i++;
  }

  fclose(fp); // We're done with the mailbox file

  messageList->msgNum = 1;
  //messageList=messageList->revNext;
  printSynopsis( messageList );

  // End of Stage 1










[ 本帖最后由 神的弃物 于 2009-10-8 18:58 编辑 ]
搜索更多相关主题的帖子: command content minute second status 
2009-10-08 18:57
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
while (i<7){
  messageList = getNextMessage(fp);
  messageList= messageList->next;   //我可以把这个放到关文件之后,但为什么这里不能用next?我怎么才能实现让 messageList复制所有getNextMessage(fp)的值?   (另外getNextMessage(fp)这个函数是之前就提供的, 并且不能改的。所以应该不是getNextMessage(fp)的问题。而且每次用getNextMessage(fp),指针自动+1)
   i++;
  }

getNextMessage这个函数应该是返回一个MailNode的指针,而不是一个链表,如果里面的next没有初始化那么next就是一个野指针,这样做肯定会有问题,
我认为是否是在循环中getNextMessage每次都返回一个MailNode的指针,需要你自己串成为一个链表。

如果getNextMessage返回一个链表,那么你这段代码没有任何意义。因为messageList每次都会改变,你设置为next有什么用处呢?





要练习算法就来http:///!!有挑战哦!!
2009-10-08 19:14
ian116
Rank: 1
等 级:新手上路
帖 子:28
专家分:2
注 册:2009-5-15
收藏
得分:0 
哦,是这样啊。谢谢。我再去研究研究
2009-10-08 19:27
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
while (i<7){
  messageList = getNextMessage(fp);
  messageList= messageList->next;   //我可以把这个放到关文件之后,但为什么这里不能用next?我怎么才能实现让messageList复制所有getNextMessage(fp)的值?   (另外getNextMessage(fp)这个函数是之前就提供的,并且不能改的。所以应该不是getNextMessage(fp)的问题。而且每次用getNextMessage(fp),指针自动+1)
   i++;
  }


我怀疑getNextMessage(fp)的功能就是->next。

一般这里出现dump是因为现有的指针没有分配内存空间。
2009-10-08 19:38
快速回复:请帮忙看看这是怎么回事,怎么一用 a=a->next就出现core dumped
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017049 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved