| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3721 人关注过本帖
标题:0x00f03829 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲 ...
只看楼主 加入收藏
cxlttt
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2010-3-28
结帖率:66.67%
收藏
 问题点数:0 回复次数:2 
0x00f03829 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突的问题是怎么回事
#include<stdio.h>
#include <stdlib.h>
#define MAX_NODE_NUM 100
typedef struct nodetype
{
  int id;
  int cipher;
  struct nodetype *next;
}node;
//isempty-----------------------------------------------
static int isempty(const node *phead)
{
  if(phead=NULL)
  {
    printf("链表为空");
return 1;
  }
  else
   return 0;
}
//getnode-----------------------------------------------
static node *getnode(const int iid,const int icipher)
{
  node *p;
  p=(node *)malloc(sizeof(node));
  if(!p)
  {
    printf("memory is not enough");
exit(-1);
  }
  p->id=iid;
  p->cipher=icipher;
  p->next=NULL;
  return p;
}
//createlist------------------------------------------------------
static void createlist(node**pphead,const int n)
{
  int i,icipher;
  node * pnew,*pcur;
  pcur=(node *)malloc(sizeof(node));
   for(i=1;i<=n;i++)
   {
     printf("输入第%d个人的密码",i);
     scanf("%d",&icipher);
     pnew=getnode(i,icipher);
     if(*pphead=NULL)
     {
    *pphead=pcur=pnew;
    pcur->next=*pphead;
     }
     else
     {
   pnew->next=pcur->next;
   pcur->next=pnew;
   pcur=pnew;
     }
   }
   printf("完成单循环链表创建\n");
}
//statgame----------------------------------------------------------
static void statgame(node **pphead,int icipher)
{
int i,iflag=1;
node *pprv ,*pcur,*pdel;
pprv=pcur=*pphead;
while(pprv->next!=*pphead)
  pprv=pprv->next;
while(iflag)
{
  for(i=1;i<icipher;i++)
  {
    pprv=pcur;
pcur=pcur->next;
  }
  if(pprv==pcur)
   iflag=0;
  pdel=pcur;
  pprv->next=pcur->next;
  pcur=pcur->next;
  icipher=pdel->cipher;
  printf("第%d个人已出列,密码:%d\n",pdel->id,pdel->cipher);
  free(pdel);
}
*pphead=NULL;
getchar();
}
//print--------------------------------------------------------------------
static void print( const node *phead)
{
const node *pcur=phead;
  if(isempty(phead))
   return ;
  do
  {
    printf("第%d个人,密码:%d\n",pcur->id,pcur->cipher);
pcur=pcur->next;
  }while(pcur!=phead);

  getchar();
}

int main()
{
int n,m;
node *phead;
phead=(node *)malloc(sizeof(node));
phead=NULL;
while(1)
{
   printf("请输入人数n(最多%d)",MAX_NODE_NUM);
   scanf("%d",&n);
   printf("和初始密码m:");
   scanf("%d",&m);
   if(n>MAX_NODE_NUM)
   {
     printf("输入的人数太多");
  continue;
   }
   else break;

}
createlist(&phead,n);
printf("\n链表原始情况打印:\n");
//print(phead);
printf("\n链表删除情况打印:\n");
statgame(&phead,m);
system("pause");
return 0;
}
红色字体部分:0x00f03829 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突
搜索更多相关主题的帖子: 位置 访问 
2010-04-17 20:47
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
这样的循环会使指针指向未知位置

★★★★★为人民服务★★★★★
2010-04-17 21:04
cxlttt
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2010-3-28
收藏
得分:0 
回复 2楼 cnfarer
不明白  那应该怎么改呢?printf 那句不应该有这个问题啊,您能不能详细帮我讲一下
2010-04-18 10:45
快速回复:0x00f03829 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生 ...
数据加载中...
 
   



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

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