C言語のプログラムです。
次のようなプログラムを作成しようと考えています。
1.文字列を入力し、入力した文字列にアルファベット以外の文字が含まれていたら再入力。
2."end"もしくは"END"が入力されたらプログラム終了。
3.main関数とは別の関数で入力した文字列に現れる文字を全て入力順に大文字で表示する。(小文字と大文字は同じ文字として扱い、出現個数も合わせて表示する)
※2.では文字列を比較するstrcmpを使用。
表示結果例)
入力:DxbhzAeFSXY
出力:D=1,X=2,B=1,H=1,Z=1,A=1,E=1,F=1,S=1,Y=1
(応用)3.では入力順に表示させていたが、アルファベット順に結果を表示する。
上記の2.までのプログラムは作成できたのですが、3.及び応用が分からず大変困っています。
どなたかご教授ください。
#include <stdio.h>
#include <string.h>
int sub(int ss[i],int n){
int x;
for(x=1; x<=n; x++){ //小文字を大文字に変換
if(ss[i]>=97){
ss[i]=ss[i]-32;
}
}
}
int main(void){
char ss[80];
char sa[2][4]={{\"end\"},{\"END\"}};
int a, i, n;
int flag= 0; //アルファベット以外の入力があった際の判別
do{
printf(\"文字列を入力してください\\n\");
gets(ss);
n= strlen(ss); //文字列ssの長さを求める
if(n=3 && ((strncmp(ss,sa[0],3)==0)) || ((strncmp(ss,sa[1],3)==0))){ //endまたはENDの判定
return 0;
}
for(i=0; i<n; i++){
if((ss[i]>=65 && ss[i]<=90) || (ss[i]>=97 && ss[i]<=122)){
}
else{
flag=1;
break;
}
}
}while(flag=1);
}