因此该程序应该采用只有小写字母且没有空格的txt文件。例如" aabbhello"。然后程序将直方图打印到命令行:
a: 2
b: 2
h: 1
e: 1
l: 2
o: 1
我目前所拥有的应该工作,但总是给我奇怪的输出:
void file_histogram(char *filename)
{
FILE *fptr;
int fsize;
fptr = fopen(filename, "r");
if(fptr == NULL) {
printf("File did not open \n");
}
fseek(fptr, 0, SEEK_END);
fsize = ftell(fptr);
char content[fsize];
rewind(fptr);
char c;
int count1 = 0;
while(fscanf(fptr, "%c", &c) == 1) {
content[count1] = c;
count1++;
}
char name[fsize];
int count[26];
int i;
for (i = 0; i < fsize; i++) {
//printf("%d", i);
name[i] = content[i];
}
int length = strlen(name);
for(i = 0; i < length; i++) {
count[i] = 0;
}
for(i = 0; i < length; i++) {
count[content[i] - 'a']++;
}
for(i = 0; i < 26; i++) {
if(count[i] != 0) {
printf("%c : %d \n", i + 'a', count[i]);
}
}
fclose(fptr);
}
当我编译程序时,我打印出的字母即使在txt文件中也是非常荒谬的高频。
a : 1
i : 1781796
l : 2
m : 1390299937
n : 32767
w : 1
当我的txt文件有&#34; william&#34;作为内容。老实说,我不知道什么是错的。是否与内存有关?任何帮助,将不胜感激!