首页 > 解决方案 > 字符串字符出现

问题描述

我想知道 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

标签: c

解决方案


您从未初始化计数器变量,因此它们以未指定的值开头。这就解释了奇怪的结果。最快的解决方案是在定义变量时对其进行初始化:

int n = 0, i = 0, g = 0, h = 0, t = 0, s = 0;

这使您的变量知道良好的初始值。


推荐阅读