2016-05-04 19 views
-1

Ich habe diesen Code in meinem Computer Buch:Sorting Namen in alphabetischer Reihenfolge in 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(); 
} 

Ich mag würde wissen, warum das Array „Liste“ als Liste deklariert wird [10] [20], aber wenn es verwendet wird, zum Speichern der Namen verwendet es nur 1 Schleife dh nur i und der 2. Index oder Index wird immer Null gehalten, während es 20 in der Deklaration ist ?!

+2

Wenn der Code enthält wirklich 'gets()', Zeit, um ein besseres Buch zu bekommen..really ... –

+0

Bitte Einrücken Sie Ihren Code. –

+1

hahaha das Buch "ist" alt obwohl;) – MGB

Antwort

2

"Liste" soll als ein Array von c-Strings verwendet werden, aber jeder solche String selbst ist wieder ein Array von char, so dass Sie ein zweidimensionales Array erhalten, wobei die "äußere" Dimension die Strings und darstellt die "innere" Dimension ein Array zum Speichern der Zeichenfolge (mit einer maximalen Länge von 20 Zeichen).

Da gets eine solche Zeichenfolge ausfüllen soll, verwendet es bereits die gesamte "innere" Dimension, so dass Sie nur die "äußere" Dimension durchlaufen müssen.

Verwandte Themen