2016-05-04 15 views
-1

で私は自分のコンピュータの本にこのコードを持っている:ソート名のアルファベット順にC

#include<stdio.h> 
#include<conio.h> 
#include<string.h> 
void main(void) 
{ 
    clrscr(); 
    char list[10][20],name[20]; 
    int i,j; 
    for(i=0;i<10;i++) 
    { 
     printf("\nEnter the Name of Student %d",i+1); 
     gets(&list[i][0]); 
    } 
    for(i=0;i<10-1;i++) 
     for(j=0;j<10-1;j++) 
      if(strcmp(&list[j][0],&list[j+1][0])>0) 
      { 
       strcpy(name,&list[j][0]); 
       strcpy(&list[j][0],&list[j+1][0]); 
       strcpy(&list[j+1][0],name); 
      } 
    printf("\nThe Sorted Name List is :"); 
    for(i=0;i<10;i++) 
     printf("\n%s",&list[i][0]); 
    getche(); 
} 

私は、配列「リスト」がリストとして宣言されている理由[10] [20]知りたいのですが、それが使用されている場合それが宣言で20である間、それは1つのループ、すなわちiのみを使用し、2番目のインデックスまたは添え字は常にゼロに保たれます。

+2

コードに 'gets()'が含まれている場合、より良い本を得るための時間は...本当に... –

+0

コードをインデントしてください。 –

+1

haha​​ha本は「古い」ですが) – MGB

答えて

2

"list"はCの文字列の配列として使用することを意図していますが、このような文字列自体はcharの配列であるため、2次元配列が得られます。 「内部」次元は、文字列を格納する配列です(最大長は20文字です)。

getsはこのような文字列を埋め込むので、すでに「内側」のディメンション全体を使用しているため、「外側」ディメンションをループするだけです。

関連する問題