c语言统计26个英文字母各出现个数,C语言统计一个英文文本文件中26个英文字母出现次数并按英文字母序输出统计结果...

时间:2025-02-17 17:10:36

#include

void hello(char one, FILE*fp )

{

char letter;

int num=0, ret;

while(!feof(fp)){

if(letter==one)

num++;

#if 0

fscanf(fp, "%c", &letter);

#else

ret = fscanf(fp, "%c", &letter);

if (ret == EOF)

break;

#endif

}

printf("%c:%d  ", one, num);

return ;

}

int main()

{

FILE *fp;

if((fp=fopen("", "r"))==NULL){

printf("Cannot open the file!\n");

//exit(0);

return -1;

}

char str[26];

int i=0;

str[0]='a';

for (i=0; i<26; i++){

//str[i+1]=str[i]+1;

str[i] = 'a' + i;

// printf("str[%d]=%c ", i, str[i]);

hello(str[i], fp);

rewind(fp);

}

fclose(fp);

return 0;

}

参考一下吧

str[i+1]=str[i]+1;

这条语句str越界,因为当i为25时,str[i+1]下表就是26,因为str[26]的下表是从0~25.

由于feof本身在判断文件末尾时会有一些小问题,建议从网上查一下feof,建议使用:

ret = fscanf(fp, "%c", &letter);

if (ret == EOF)

break;