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);

相关文章: