1.段错误
当函数执行一次的时候不报错,当函数在一个循环中迭代调用的时候报段错误。
错误原因。
int weight=0;
fprintf( ferr, "%s\t%f\t%s\n", word, weight, hzpy );
当此条语句改为fprintf( ferr, "%s\t%d\t%s\n", word, weight, hzpy );时候则不报错。
2.双层hash
if(defined($hashtobeupdate{$vec[1]}))
126 { 127 if(defined($hashtobeupdate{$vec[1]}{$vec[0]})&& $vec[2]>0)128 { 129 $hashtobeupdate{$vec[1]}{$vec[0]}+=$vec[2];130 print STDOUT "$vec[1]\t$vec[0]\t$hashtobeupdate{$vec[1]}{$vec[0]}\n";131 132 }133 }注意:双层hash必须先check第一层key是否出现,否则会自动内插,内存越来越大。
2. 两种字符串初始化方式
char word[MAX_LINE_LENGTH] = {0};
char *word=new char[MAX_LINE_LENGTH];
memset(word,0,MAX_LINE_LENGTH);