从屏幕上输入一个英文文本文件的全路径(如d:\aa.txt)
用程序打开文本文件统计出各个可显示字符出现个数,包括数字字母标点不分大小写,没出现字符不统计(空格显为0x20)
在屏幕上打印各个字符出现次数格式类似
1 : 1
6 : 2
, : 109
0x20 : 111
a : 503
解答如下
#include <stdio.h>
int main()
{
char path[255];
gets(path);
int t[255]={0};
char ch;
FILE* fp;
fp=fopen(path,"r");
if(fp==NULL)
{
printf("文件打开失败!\n");
return 0;
}
else
{
while(fscanf(fp,"%c",&ch)==1)
{
t[ch]++;
printf("%c",ch);
}
}
fclose(fp);
printf("\n");
for(int i=0;i<255;i++)
{
if(t[i]>0&&i>=32)
{
if(i==32) printf("%s: %d\n","0x20",t[i]);
else printf("%c: %d\n",i,t[i]);
}
}
return 0;
}
各个可显示字符 --- 只考虑可显示字符吗?换行之类的不考虑呗?
#include<stdio.h>
int main()
{
char s[100];
gets(s);
FILE *fp = fopen(s,"r");
if(fp != NULL)
{
char a[10000];
fread(a,1,10000,fp);
int len = strlen(a);
int b[255] = {0};
for(int i=0;i<len;i++)
{
b[(unsigned char)a[i]]++;
}
fclose(fp);
for(int i=32;i<127;i++)
{
if(b[i] > 0)
{
if(i==32)
printf("0x20 : %d\n",b[i]);
else
printf("%c : %d\n",b[i]);
}
}
}
else
{
printf("open error");
return 0;
}
}
int main()
{
char file[255], ch;
int count[127] = {0};
FILE *fp;
scanf("%s", file);
fp = fopen(file, "r");
if (fp == NULL)
exit(1);
while (!feof(fp))
{
ch = fgetc(fp);
if (ch >= ' ')
count[ch]++;
}
fclose(fp);
for (int i = 0; i < 127; i++)
{
if (count[i] > 0)
{
ch = i;
if (ch == ' ')
printf("0x%x: %d\n", ch, count[i]);
else
printf("%c: %d\n", ch, count[i]);
}
}
}