tc运行问题 ,终于找到问题的所在,但不知为什么 :Invalid keyboard code specified
一个查找问题
题目是:设某字典组成如下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语言不是可以这样给数组赋值的吗?
[解决办法]
不知道你编译怎么通过的?float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};
最后的这个分号是中文的,在我的编译器下通不过.
[解决办法]
float f[17]={0,0.16,0.87,154,170,275,426,503,509,512,612,653,677,703,765,896,908};
这样初始化是可以的。
[解决办法]
ST.elem=(float *)malloc(17,sizeof(float));
改为:
ST.elem = (float *)malloc(17 * sizeof(float));