只是你的标准C初级课程我试图打印出一个用户输入的字符串的所有不同字符的直方图。

#include <stdio.h>


#define LIMIT 255


main(){
int asciiArray[LIMIT], input, outer, inner;

while((input = getchar()) != EOF){
    asciiArray[input] = ++asciiArray[input];
    //printf("%d\n", asciiArray[input]);
}
for(outer = 0; outer <= LIMIT; outer++){
    if(asciiArray[outer] < 0){
        putchar(outer);
        printf("\t");
        for(inner = asciiArray[outer]; inner > 1; inner--)
            printf("*");
        printf("\n");
    }
    else
        ;
}

}
这些是当用户输入“h”时的结果:
h0
2
9
?
@
C
G
J
K
U
Z
a
b
h
j
l
n
q
}
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�

最佳答案

首先,您没有初始化asciiArray,因此它可能包含所有内容。
尝试memset(asciiArray, 0, sizeof(asciiArray));int asciiArray[LIMIT] = {0}
此外,还可以将该增量简化为:asciiArray[input]++
for看起来也很可疑(尤其是它访问asciiArray[255]的方式)更重要的是,我不明白asciiArray[outer]怎么会小于0也许你的意思是>?.

关于c - 绘制不同字符出现次数的直方图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7099256/

10-11 17:04