0

これは、文字列内で最も一般的な要素を見つけることになっているプログラムです。しかし、文字列を入力するとクラッシュします。

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(){
    char a[100];
    scanf("%s", a);
    int max=0,n,k;
    int urt = strlen(a);
    for(int i=0; i<urt-1; i++){
        n=0;
        for(int l=i+1; l<urt; l++){
            if(a[i]==a[l]) n++;
        }
        if(max<n){
            max=n; 
            k=i;
        }
    }
    printf("%s\n", a[k]);
    printf("%d", max);
    getch();
    return 0;
}
4

1 に答える 1

6

エラー: フォーマット '%s' はタイプ 'char *' の引数を想定していますが、引数 2 のタイプは 'int' です</p>

つまり、次のように変更する必要があります。

printf("%s\n", a[k]);

に:

printf("%c\n", a[k]);

a[k]は文字列ではなく、文字だからです。また、より正確な出力を得るには、n に 1 を追加して、(外側のループから) スキャンしている文字を考慮します。

n=1; // instead of n=0;
于 2012-11-26T08:05:55.363 に答える