2015-09-20 79 views
-3

我需要從用戶輸入字符串並按照ascii值的升序排列它們。任何人都可以幫助我,我錯了嗎?我在歌廳錯誤嘗試比較二維數組中字符串的升序ascii值

#include <stdio.h> 
#include <string.h> 

int sort(char[10][10]); 

main(int argc, char *argv[]) 
{ 
    int i,j,length,fun; 
    char c; 
    char a[10][10]; 
    printf("Please enter ten strings : \n"); 
    for(i=0;i<10;i++) 
    { 
    j=-1; 
    while(a[i][j]!='\n'&&j<10) 
    { 
     scanf("%c",&a[i][++j]); 
    } 
    a[i][j]='\0'; 
    } 

    for(i=0;i<10;i++) 
    { 
    printf("\n"); 
    for(j=0;j<10,a[i][j]!='\0';j++) 
    { 
     printf("a[%d][%d]=%c\n",i,j,a[i][j]); 
    } 
    } 
    fun=sort(a[10][10]); 
    return 0; 
} 

int sort(char s[10][10]) 
{ 
    int i,j; 
    char temp[10]; 
    for (i = 1; i < 10; i++) { 
    for (j = 1; j < 10; j++) { 
     if (strcmp(s[j - 1], s[j]) > 0) 
     { 
     strcpy(temp, s[j - 1]); 
     strcpy(s[j - 1], s[j]); 
     strcpy(s[j], temp); 
     } 
    } 
    } 
    printf("Sorted list(in ascending order is:"); 
    for(i=0;i<10;i++) 
    {  
    for(j=0;j<10,s[i][j]!='\0';j++) 
    { 
     printf("%c\n",s[i][j]); 
    } 
    } 
    return 0;  
} 
+3

「*我geting錯誤*」 - **錯誤是什麼**? –

回答

2

問題:

  1. 此:

    j=-1; 
    

    應該

    j = 0; 
    

    因爲數組的下標從零開始,而不是-1。

  2. 此:

    while(a[i][j]!='\n'&&j<10) 
    

    應該是

    while(a[i][j] != '\n' && j < 9) 
    

    ,使得如果用戶輸入多於9個字符的NUL終止子不被寫入一個無效的內存位置。

  3. 此:

    fun=sort(a[10][10]); 
    

    應該

    fun = sort(a); 
    

    ,因爲你要在陣列發送到功能。