2012-11-26 38 views
0

这里是应该找到字符串中最常见元素的程序。但是当我输入一个字符串时它崩溃了。我的小c程序崩溃

#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; 
} 

回答

6

error: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’

这意味着你需要改变:

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

到:

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

因为a[k]不是一个字符串,而是一个字符。也为了得到更准确的输出,加1到n来考虑你正在扫描的字符(从外部循环):

n=1; // instead of n=0; 
+0

哦,我不知道。它正在工作。 – bbilegt