首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙见见这个程序为什么不能运行

2013-01-06 
帮忙看看这个程序为什么不能运行#include stdio.h#include stdlib.h#define LIST_SIZE 20typedef char

帮忙看看这个程序为什么不能运行
#include "stdio.h"
#include "stdlib.h"
#define LIST_SIZE 20
typedef char KeyType;
typedef struct
{
KeyType key;
}RecordType;
typedef struct
{
RecordType r[LIST_SIZE+1];
int length;
}RecordList;
void seqSearch(RecordList *l)
{
KeyType k;int i;
printf("请输出要查询的元素k:");
scanf("%c",k);
i=l->length;
while (i>=1&&l->r[i].key!=k) 
i--;
printf("该元素的位置是");
printf("%d",i);//cout<<"该元素在图中第"<<i<<"个位置"<<endl;
}
void inputkey(RecordList *l)
{
int i,m;
char n;
printf("请输入线性表长度:");//遇到错误:1.print用法
scanf("%d",&(l->length));//&将变量的地址赋值,而不是变量的值
m=l->length;
for(i=0;i<m ;i++)
{
printf("请输入元素的值:");
scanf("%c",&(l->r[i].key));
}
}
int main()
{
RecordList *l;//错误2.定义指针类型,传值错误
inputkey(l);
//seqSearch(l);
for(int i=0;i<l->length;i++)
{
printf("%c",l->r[i].key);
}
return(0);
}
[解决办法]
scanf("%c",k); 改为 scanf("%c",&k);
[解决办法]
RecordList *l;//错误2.定义指针类型,传值错误
inputkey(l);没有分配内存

l=(RecordList *)malloc(sizeof(RecordList));
出错的时候多加点打印,看是哪个地方出错了。在分析可能出错的原因
[解决办法]
第一,函数seqsearch注释掉了,在主函数中根本就没有作用,白白定义和声明了。
第二,像楼上说的,对于RecordList *l;//错误2.定义指针类型,传值错误
这句来说你只是申请了一个指针变量的存储空间,根本就没有结构类型的变量申明,你可以这样:
RecordList *l,a;l=&a;
第三,还是上面提到的,对于scanf的用法中需要对于输入列表前面加上取地址符号&;
由于不知道你的程序的目的是什么,粗略的看了一下,暂时只是发现了这些问题,还有什么要问的,可以继续交流,嘿嘿

热点排行