当我运行这段代码时,我得到一个分段错误,但如果我改变result
它blah
运行得很好。我已经尝试了有符号/无符号、sscanf/atoi、初始化/非、int/char 的所有排列,甚至直接使用指针而不是作为参数。
我知道这是 char* 不为空。唯一的变化是变量的名称。
有谁知道这是什么原因?简直太诡异了……
编辑:此文件的范围内没有其他变量。
编辑:它似乎与return
. 如果我返回使用的值,我会得到一个错误,但控制在崩溃之前永远不会离开函数。
unsigned int getHashValue(char* key, char** table, unsigned int tableCount)
{
int i = 0;
//unsigned int length = strnlen(key,1024);
unsigned int length = 1024;
printf("Hashing...\n");
unsigned int blah;
int result;
for (i=0;i<tableCount;i+=2)
{
printf("i: %i\n",i);
if (strncmp(key,table[i],length)==0)
{
printf("found %s\n", table[i+1]);
/*sscanf()*/
result = (unsigned int) atoi(table[i+1]);
//blah = atoi(table[i+1]);
//sscanf(table[i+1],"%i",&result);
return result;
}
}
printf("..done\n");
return 0;
}