#include <iostream>
#include <string>
#define SIZE_LETTERS (254)
using namespace std;
void analyzeF(const string *input, char a, int *freq) {
for (int i = 0; i < (input)->length(); ++i) {
if ((*input)[i] == a)
++(*freq);
}
}
int main() {
int freq = 0;
string input = "53\u2021\u2021\u2020305))6*;4826)4\u2021.)4\u2021);806*;48\u2020860))85;;]8*;:\u2021*8\u202083(88)5*\u2020;46(;88*96*?;8)*\u2021(;485);5*\u20202:*\u2021(;4956*2(5*\u20144)88*;4069285);)6\u20208)4\u2021\u2021;1(\u20219;48081;8:8\u20211;48\u202085;4)485\u2020528806*81(\u20219;48;(88;4(\u2021?34;48)4\u2021;161;:188;\u2021?;";
char c;
cout << "Please enter a character to be matched: " << endl;
cin >> c;
analyzeF(&input, c, &freq);
double result = (double)freq/SIZE_LETTERS;
cout << "The frequency for " << c << " is:" << result << endl;
return 1;
}
编写此程序是为了检测字符串中使用的字符的频率。
当我执行程序时,无论我为 char c 键入什么,输出值都是 0。
但是,当我在 gdb 中调试它时,它会给出正确的结果。例如 8 的频率是 0.133858。
我用来生成 .o 对象的命令是:
g++ -g c.cpp -o c
./c