c - 字符串字符出现
问题描述
我想知道 char [] 在 C 中是如何工作的。在我的程序中,我试图找到给定句子的每个字符的出现总数。
int main(void)
{
char sampleInput[] = "Long long nights await ahead";
int n, i, g, h, t, s;
int lengthOfArr = (sizeof(sampleInput)/sizeof(sampleInput[0]));
for(int i = 0; i < lengthOfArr; i++)
{
if(sampleInput[i] == 'N'|| sampleInput[i] == 'n'){
n++;
}
if(sampleInput[i] == 'I'|| sampleInput[i] == 'i'){
i++;
}
if(sampleInput[i] == 'G'|| sampleInput[i] == 'g'){
g++;
}
if(sampleInput[i] == 'H'|| sampleInput[i] == 'h'){
h++;
}
if(sampleInput[i] == 'T'|| sampleInput[i] == 't'){
t++;
}
if(sampleInput[i] == 'S'|| sampleInput[i] == 's'){
s++;
}
}
printf( "N: %d\nI: %d\nG: %d\nH: %d\nT: %d\nS: %d\n", n,i,g,h,t,s);
}
我应该能够显示每个字母的出现总数。但是,我得到的输出是随机值。N:4194435 I:1974890477 G:3604483 H:2 T:4201490 S:4201596
解决方案
您从未初始化计数器变量,因此它们以未指定的值开头。这就解释了奇怪的结果。最快的解决方案是在定义变量时对其进行初始化:
int n = 0, i = 0, g = 0, h = 0, t = 0, s = 0;
这使您的变量知道良好的初始值。
推荐阅读
- windows-10 - 查找文件路径,然后使用该文件路径复制+粘贴文件
- node.js - 如何链接 Promise 和多个异步请求?
- neo4j - 使用 GraphAware NLP 运行“ga.nlp.annotate”时出现“java.lang.OutOfMemoryError: Java heap space”
- c++ - 使用 C++ 对 2D 图像进行 DFT - 不好的结果
- python - Python Pulp - 避免解决方案中的重复条目
- java - 此方法必须返回 double 类型的结果
- php - SQLSTATE[HY000] [2002] php_network_getaddresses
- html - CSS 引导程序。固定和流体 div,流体内部内容似乎偏移
- gganimate - 将 gganimate 动画保存为 mp4 文件
- eclipse - 如何使用 e(fx)clipse 将 JavaFX-Project-Wizzard 添加到 Eclipse 4.9?