4.3.1
写一个算法统计在输入字符串中各个不同字符出现的频率并将结果存入文件(字符串中的合法字符为A~Z这26个字母和0~9这10个数字。
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 255
typedef struct{
char *ch;
int length;
}SString;
int main() {
int array[40] = {0};
SString s;
s.ch = (char *)malloc(sizeof(char)*MAXLEN);
scanf("%s",s.ch);
int i = 0;
while(s.ch[i]!= '\0'){
if(s.ch[i]>='0' && s.ch[i] <='9'){
array[s.ch[i]-'0']++;
}else if(s.ch[i]>='A' &&s.ch[i] <='Z'){
array[s.ch[i]- 'A'+10]++;
}
i++;
}
FILE *fp;
if((fp = fopen("frequency.txt","w"))==NULL){
printf("FILE OPEN ERROR\n");
exit(0);
}
for(int j = 0; j < 10;j++){
fprintf(fp,"%c:%d\n",'0'+j,array[j]);
}
for(int j = 10;j<36;j++){
fprintf(fp,"%c:%d\n",'A'+j-10,array[j]);
}
if(fclose(fp)){
printf("FILE CLOSE ERROR");
exit(0);
}
return 0;
}