69,371
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
int main( void )
{
FILE *p = fopen("1.txt","r");
int c=0,i=0;
int ch[256]={0};
while( (c=fgetc(p)) != EOF)
ch[c]++; //256种字节值都记录下来
fclose(p);
for( i=0 ; i<256 ; i++ ) //遍历256种字节值的个数
if( (i>='A'&&i<='Z') || (i>='a'&&i<='z') ) //是字母就输出
printf("%c:%d\n", i, ch[i] );
return 0;
}
没有运行验证,不过应该是没问题的#include<stdio.h>
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("english.txt", "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;