c - C 编程中出现的奇怪答案

标签 c

我是编程新手,刚刚开始 C 编程。然而,当我尝试这段简单的代码时,我得到了一个奇怪的答案。

char str[1000], ch;
int i, frequency;

printf(" Enter a string: ");
gets(str);

printf(" Enter the character you want to find the frequency of: ");
scanf(" %c", &ch);

for (i=0; str[i]!='\0'; i++){
   if ( ch == str[i]){
     ++frequency;
 }
}
printf(" The frequency of %c is %d", ch, frequency);
return 0;

我得到的答案是这样的:

Enter a string: This website is awesome

Enter the character you want to find the frequency of: e

The frequency of e is 12

我的编译器有问题吗?我正在尝试从在线源获取这段代码,所以它应该可以工作,对吧?所以应该是 4 对吗?

最佳答案

您从未初始化频率。在你开始添加之前,它是从什么开始的。答案:没有人知道,但在您的示例中看起来是 8

因为您从未设置过它,所以它就是内存上次使用的内容。在使用该值之前,您确实应该将其设置为 0

关于c - C 编程中出现的奇怪答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52570016/

相关文章:

将 C 代码转换为 MIPS 汇编语言

c - 仅适用于 C 的 Eclipse makefile(Windows 版本)

c++ - 在一个循环中证明内存访问

c - 如何反转 spin_lock_init

c - 如何通过C中的套接字号获取客户端IP

c - printf 和 for 函数中的后缀和前缀 (C)

编译错误 - sysdeps/i386/elf/start.S 和对 main 的 undefined reference

c - 有什么办法可以减少这两个相依矩阵之间的运算吗?

c - 如何使用procfs将内核数据发送到用户空间?

c - 我怎么知道c中指针变量的分配内存大小