请问你可以写文件操作么? 请先把你的思路写出来吧。
我很奇怪,怎么能不用if?怎们能不逐个比较?
#include<stdio.h>
int main(){
FILE *in = fopen("F:\\CCCCCCCCCCCCCCC\\clion_work\\Test\\calcuchar.txt", "r");
FILE *out = fopen("F:\\CCCCCCCCCCCCCCC\\clion_work\\Test\\count.txt","w");
char ch;
int num[75]={0}; //48-122=74; 48 65 97
while(!feof(in)){
ch = fgetc(in);
num[ch-48]++;
}
// for(int i=0;i<10;i++) printf("%d %d\n",i,num[i]);
// for(int i=0;i<26;i++) printf("%c %d\n",'A'+i,num[17+i]);
// for(int i=0;i<26;i++) printf("%c %d\n",'a'+i,num[49+i]);
char str[5]={' ',' ',' ','\n','\0'};
char str2[6]={' ',' ',' ',' ','\n','\0'};
for(int i=0;i<10;i++){
if(num[i]<10){
str[0] = '0'+i;
str[2] = '0'+num[i];
fputs(str,out);
}else{
str2[0] = '0'+i;
str2[2] = '0'+num[i]/10;
str2[3] = '0'+num[i]%10;
fputs(str2,out);
}
}
for(int i=0;i<26;i++){
if(num[17+i]<10){
str[0] = 'A'+i;
str[2] = '0'+num[17+i];
fputs(str,out);
}else{
str2[0] = 'A'+i;
str2[2] = '0'+num[17+i]/10;
str2[3] = '0'+num[17+i]%10;
fputs(str2,out);
}
}
for(int i=0;i<26;i++){
if(num[49+i]<10){
str[0] = 'a'+i;
str[2] = '0'+num[49+i];
fputs(str,out);
}else{
str2[0] = 'a'+i;
str2[2] = '0'+num[49+i]/10;
str2[3] = '0'+num[49+i]%10;
fputs(str2,out);
}
}
fclose(in);
fclose(out);
return 0;
}
#include<stdio.h>
int main(){
FILE *in = fopen("F:\\CCCCCCCCCCCCCCC\\clion_work\\Test\\calcuchar.txt", "r");
FILE *out = fopen("F:\\CCCCCCCCCCCCCCC\\clion_work\\Test\\count.txt","w");
char ch;
int num[75]={0}; //48-122=74; 48 65 97
while(!feof(in)){
ch = fgetc(in);
num[ch-48]++;
}
for(int i=0;i<10;i++){
for(int j=0;j<num[i];j++){
fputc('0'+i,out);
if(j==num[i]-1) fputc('\n',out);
}
}
for(int i=0;i<26;i++){
for(int j=0;j<num[17+i];j++){
fputc('A'+i,out);
if(j==num[17+i]-1) fputc('\n',out);
}
}
for(int i=0;i<26;i++){
for(int j=0;j<num[49+i];j++){
fputc('a'+i,out);
if(j==num[49+i]-1) fputc('\n',out);
}
}
fclose(in);
fclose(out);
return 0;
}