数组和字符串的解释

时间:2016-02-10 15:12:53

标签: c arrays string

我找到了一个显示字符串中字符频率的代码。具体地,

#include <stdio.h>

int main(){
    char string[100];
    int i, frequency[256] = {0};


    printf("Enter a String\n");
    gets(string);

    for(i=0; string[i]!=0; i++){



    frequency[string[i]]=frequency[string[i]]+1;

    }

    printf("\nCharacter   Frequency\n");
    for(i=0; i < 256; i++){
        if(frequency[i] != 0){
            printf("%5c%10d\n", i, frequency[i]);
        }
    }

    return 0;
}

但是,我不明白这一点:

 frequency[string[i]]=frequency[string[i]]+1;

它做什么?它是如何表现的?我相信string[i]frequency的长度?但我不确定。

2 个答案:

答案 0 :(得分:6)

此处,string[i]充当数组frequency索引

 frequency[string[i]]=frequency[string[i]]+1;

您尝试将frequency[string[i]]元素的值增加1。

这也可以重写为

 frequency[string[i]]++;

话虽如此,

  • 从不使用gets() ,严重时会遇到缓冲区溢出问题。请改用fgets()

  • int main()至少应符合int main(void)标准。

  • 最好始终初始化您的本地变量,例如char string[100] = {0};

  • Link to the ASCII table,供您参考。

答案 1 :(得分:2)

char值可用作数组索引。 string[i]char,它在语句

中用作数组索引
frequency[string[i]]=frequency[string[i]]+1;  

因此,如果string[i] = 'c'及其在i th 迭代的字符串中出现1,则上述表达式将增加频率字符'c',即frequency[string[i]] 1 在这种情况下,frequency[string[i]]相当于frequency['c'],而frequency[99]相当于99,其中'c'相当于{{1}} {{1}}。