计算字符(再次!)

Der*_*unk 2 c++

假设我想计算一些mFile像这样的字符:

  while((c = getc(mFile)) != EOF){
    chars[c]++;
  }
Run Code Online (Sandbox Code Playgroud)

如果我试图向他们展示:

  for(int f=0;f<256;f++) {
    if(isprint(f) && chars[f]>0) 
      cout << (char)f << " " << (int)chars[f] << endl;
  }
Run Code Online (Sandbox Code Playgroud)

所有字符打印都很好.但如果我这样做

      cout << " " << (int)chars[32] << endl;
Run Code Online (Sandbox Code Playgroud)

然后它不会打印数字...... int我想是一些大的,因为它是负面的.我究竟做错了什么?是否getc上破,或不计空格?

谢谢

Oli*_*rth 5

根据您对我的评论的回答,我会说问题可能char是在您的平台上签名,并且您的输入文件中有超过127个空格,因此chars[32]包装并变为负数.

为什么不为您的柜台使用更合适尺寸的类型?