| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:为什么我的指针一开始就跑了??!!!
只看楼主 加入收藏
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:8 
为什么我的指针一开始就跑了??!!!
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include <stdlib.h>
#include<conio.h>
 
#define LEN sizeof(STUDENT1) //链表节点长度字节数为LEN
#define  NUM  30
 
//用以建立学生成绩链表节点时使用的结构体类型声明
typedef struct student1
{
 char name[20];    //用于存储学生姓名
 float cprogram ;   //用于存储C语言课程成绩
 struct student1  *next;  //链表指针
}STUDENT1;

//用以排序时使用的结构体类型声明
typedef struct student2
{
 char name[20]; //用于存储学生姓名
 float cprogram ;//用于存储C语言课程成绩
}STUDENT2;

/*链表操作所用结构体指针,为全局变量指针*/
STUDENT1 *head=NULL,*p1=NULL,*p2=NULL,*p3=NULL,*p4=NULL;  //定义结构体指针head 为头指针;p1、p2、P3为建立、查找、增加、删除、修改节点数据时使用的指针
 
STUDENT2 stu[NUM];
STUDENT2 stud;//数组个数最大30,用于排序使用
int len=0; //记录链表中节点的实际个数,也是最大的顺序号
int flag=0,sxh;
char name1[20]; //标志变量,表示是否已建立过成绩链表,flag=0,为未建立过成绩链表;
//若已建立,则不能再次建立成绩链表,但可以增加、删除节点数据   

/**被调用函数集中声明;***/
//如:int  create();
int menu_select();
void create();


//程序主入口
 
/***********************************主函数************************/
int main(void)
{   
 int menuchoice;
 do{
  menuchoice=menu_select();
  switch(menuchoice)    //根据菜单项的选择进行相应的操作
  {
  case 1:
   //调用create函数
   if(flag==1)
    printf("数据已经建立!");
   else
   {
    printf("请输入该班学生个数:\n");
    scanf("%d",&len);
    if(len>=1 && len<=30)
     create();
    else
     printf("输入的个数过大!!\n");
   }
   
   system("pause");        
   break;
   
   
  default:
   printf("\n对不起,您输入的功能编号有错!请重新输入!!!\n");
   system("pause");
   break;
  }
 }while(1);
 
}

//以下为各功能函数
/**************************主菜单*********************************
*函 数 名:menu_select
*描    述:显示操作主菜单
*入口参数:无
*出口参数:int型选项值
******************************************************************/
int menu_select()
{
 int menuchoice=-1;
 system("cls");/*清屏*/
 printf("\n\n\n\n");
 printf("\t\t\t  学生成绩管理基本功能菜单 \n");
 printf("\t\t\t       作者:***   \n");
 printf("\t\t\t  =======================  \n");
 printf("\t\t\t  1.新建学生记录    \n");
 printf("\t\t\t  2.显示学生记录    \n");
 printf("\t\t\t  3.按给定姓名查找   \n");
 printf("\t\t\t  4.按顺序号查找    \n");
 printf("\t\t\t  5.从高到低排序输出   \n");
 printf("\t\t\t  6.从低到高排序输出   \n");
 printf("\t\t\t  7.给定顺序号插入成绩  \n");
 printf("\t\t\t  8.给定顺序号删除成绩  \n");
 printf("\t\t\t  9.给定顺序号修改成绩  \n");
 printf("\t\t\t  10.显示高于平均分的学生  \n");
 printf("\t\t\t  11.结束程序     \n");
 printf("\t\t\t  =======================  \n");
   
 
 printf("\t\t\t请输入您的选择:  \n");   
 scanf("%d",&menuchoice);
 return menuchoice;
}
 
//以下为各功能函数
/*******************************************************************
*函 数 名:create
*描    述:从键盘输入学生的个数,然后逐个输入学生的姓名和成绩,将其保存在链表中
*入口参数:全局链表指针 head,p1L,p2,p3
*出口参数:如果创建成功返回在链表中实际输入的学生的个数len,创建失败返回0;
******************************************************************/
void create()
{
 //可以设计成从文件读入指定节点个数的学生信息至链表中,也可以设计成从键盘输入学生信息
 FILE*fp;
 int n=0;
 if((fp=fopen("d:\\test1.txt","r"))==NULL) /*打开文件*/
 {
  printf("文件不存在或无法打开!\n");
  exit(0);
 }
 head=p1=(struct student1 *)malloc(LEN);
 p1->next =NULL;
 while(!feof(fp))
  {
   n++;
   fscanf(fp,"%s%f", p1->name,&p1->cprogram);
   p2=(struct student1 *)malloc(LEN);  /*开辟一个新单元*/
   p1->next =p2;
   p3=p1;
   p1=p2;
   p1->next =NULL;
   if(n>len)
    break;
  }
  free(p2);
  p3->next=NULL;
  printf("\n %d项信息输入完毕,按任意键返回......\n",n-1);        
  flag=1;       /*设置保存记录标志*/
  if( fclose(fp) )       /* 关闭文件  */
  {           
          printf( "Can not close the file!\n" );
          exit(0);
  }
 
}
搜索更多相关主题的帖子: 存储 include 结构体 C语言 
2012-12-26 21:24
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:7 
我的,不懂的,楼主什么意思的干活。。。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 21:27
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
文件输入的说。。。。
2012-12-26 21:43
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
建立不了成绩个数
2012-12-26 21:43
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:7 
这么长?

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-26 21:47
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
。。。。。
2012-12-26 22:00
qq1129349299
Rank: 2
等 级:论坛游民
帖 子:5
专家分:16
注 册:2012-12-25
收藏
得分:7 
.....
2012-12-26 22:10
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
求助啊!!!
2012-12-26 22:11
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
有木有大神看一下啊
2012-12-27 12:16
快速回复:为什么我的指针一开始就跑了??!!!
数据加载中...
 
   



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

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