tc运行问题 ,终于找到问题的所在,但不知为什么 :Invalid keyboard code specified

sooho 2007-05-15 12:59:48
一个查找问题
题目是:设某字典组成如下D={0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908},用顺序查找检索字典中是否有元素612.

我的代码是

#include <stdio.h>

typedef struct {
float *elem;
int length;
}SSTable;//顺序查找表

int search_ssq(SSTable ST,float e){
ST.elem[0]=e;
for(int i=ST.length;ST.elem[i]!=e;--i);
retuen i;
} //检索

main(){
int k,j;
float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};//f[0]=0是我加的,作为前哨。
SSTable ST;
ST.elem=(float *)malloc(17,sizeof(float));
ST.length=16;
for(j=0;j<17;j++)
ST.elem[j]=f[j];//将f[]的值赋给ST.elem.
//以上四行是初始化查找表,初始值是D
k=search_ssq(ST,612); //调用查找函数
if(k) printf("it is elem[%d]=%f",k,ST.elem[k]);
else printf("no,the elem is not in"); //输出结果
}

编译器是tcforwindows,操作系统xpsp2中文版 (美式键盘输入)
编译没有错,运行就出现:Invalid keyboard code specified

我已经找到是因为:float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};这个赋值的问题,可是c语言不是可以这样给数组赋值的吗?
...全文
505 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiantongyuan 2007-05-15
  • 打赏
  • 举报
回复
ST.elem=(float *)malloc(17,sizeof(float));
改为:
ST.elem = (float *)malloc(17 * sizeof(float));
独行侠客2 2007-05-15
  • 打赏
  • 举报
回复
??
networld2002 2007-05-15
  • 打赏
  • 举报
回复
tcforwindows, 哪里有下载
jixingzhong 2007-05-15
  • 打赏
  • 举报
回复
float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};

这样初始化是可以的。
sooho 2007-05-15
  • 打赏
  • 举报
回复
P6689() ( ) 信誉:100 Blog 加为好友 2007-5-15 2:26:34 得分: 0
不知道你编译怎么通过的?float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};
最后的这个分号是中文的,在我的编译器下通不过.

分号可能是我法帖加错了,代码里是英文的。

就是这个数组初始化不能这样赋值,我后来用int a[2]={0,1};都不能,我用的是Turbo C for Windows 4.0,可能是一个bug了。


P6689 2007-05-15
  • 打赏
  • 举报
回复
不知道你编译怎么通过的?float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};
最后的这个分号是中文的,在我的编译器下通不过.

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧