是什么原因导致字符数从cin不准确和非常大
What causes character counts from cin inaccurate and really large?
我正在通过char c = cin.get()
进行字符计数。我的输出示例是:答: 53乙: 32c:29等。
对于其中一个字母表,我得到了一个非常大的 9 位数字。然后,当我使用另一个包含更多字符的输入文件时,数字是 6 位数字,太大而无法准确。对这种表型有什么想法吗?
再次抱歉,现在是学期结束的关键时刻。我感谢那里的任何帮助。
int main (int argc, char *argv[])
{
int count [26] = { };
char alpha [26] = { };
char c;
c = cin.get();
while(!cin.eof())
{
if (isalpha(c))
{
c = tolower(c);
}
count [ c - 'a']++;
alpha [ c - 'a'] = c;
c = cin.get();
}
for ( int i = 0; i<26; i++ )
{
cout << alpha[i] << ":" << count[i] << endl;
}
} //end main
这是输出:(已编辑)
a:224
b:50
c:70
d:20
e:167772180
f:10
g:40
h:66
i:28
以下是输入:(已编辑)
啊啊
进行了这些更改,但它仍然"挂起":
c = cin.get();
while(c=cin.get())
{
c = tolower(c);
if (isalpha(c))
continue;
count [ c - 'a']++;
alpha [ c - 'a'] = c;
}
for ( int i = 0; i<26; i++ )
{
cout << alpha[i] << ":" << count[i] << endl;
}
} //end main
如果输入文件包含字母以外的任何内容,则可能发生任何事情,因为您正在访问带有越界索引的数组。也许你的意思是:
while(!cin.eof())
{
if (isalpha(c))
{
c = tolower(c);
count [ c - 'a']++;
alpha [ c - 'a'] = c;
}
c = cin.get();
}
例如,当数据包含换行符 (10) 时,您正在访问索引为 10 - 97 = -87 的alpha
。这可能将 10 写入 count[4]
的最高有效字节.
相关文章:
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- GDB 断点在 Mac 上是不准确的
- cout 打印不准确的结果,printf 打印准确的结果
- C++中的 Json:将数字解析为字符串以避免浮点不准确
- 为什么OpenCV Templete匹配函数根本不准确
- 控制台分辨率程序不准确
- 来自 cmath 库的 asin() 函数返回不准确的值
- TBB Parallel_用于计数,增量变量不准确
- 我必须将 5 个数字放入一个数组中,而不是 cin 计算平均值并输出它,我做错了
- LIBCURL:网络上传下载速度的输出不准确
- GPROF分析工具是不准确的执行时间
- 使用FP:快速导致错误的VC 结果(不仅仅是不准确)结果 - 这是编译器错误
- GPU驱动程序中的Vulkan纹理映射不准确
- CPP重新排序示例,而计时器不准确
- 浮点数的不准确导致计算错误
- 是什么原因导致字符数从cin不准确和非常大
- LAPACKE特征解不准确.如何改进它
- 编译器未识别 getline()。此外,它不允许 CIN 和 COUT 使用字符串
- 如何在不使用cin.ignore()和clear()的情况下修复字符串用户输入--C++
- 程序不等待 cin