2017-11-15 3 views
-2

mir helfen. Ich wurde beauftragt, eine Anwendung für ein Testergebnis zu erstellen. aber warum kann ich nicht ausdrucken, was Benutzer in Fall 2 eingegeben haben. Ich habe andere Annäherung versucht, aber es funktioniert nicht. Das ist das nächstgelegene, was ich dort erreichen konnte. Jede Hilfe wäre willkommen. Super dank + _ +ein Array scannen und an anderer Stelle in C zuweisen

dies ist mein Code:

int main(){ 
    int option; 
    char namamurid[30][15]; 
    int i=0,j=0; 
    int listening[15]; 
    int reading[15]; 
    int essay[15]; 
    int score[15]; 

    do{ printf("\"Smart English\" Course Center\n********************************\n"); 
     printf("1.Add new data\n2.View data\n3.View summary\n4.Exit\n\n"); 
     printf("your option[1..4]: "); 
     scanf("%d",&option); 
     fflush(stdin); 

     switch(option){ 
      case 1: 
       do{ 
        printf("Input student's name[1..25 char]: "); 
        scanf("%[^\n]s",namamurid[i]); 
        fflush(stdin); 
       }while(strlen(namamurid[i])<1 || strlen(namamurid[i])>25); 

       do{ 
        printf("Correct answer for listening section[0..20]: "); 
        scanf("%d",&listening[i]); 
        fflush(stdin); 
       }while(listening[i]<0 || listening[i]>20); 

       do{ 
        printf("Correct answer for reading section[0..30]: "); 
        scanf("%d",&reading[i]); 
        fflush(stdin); 

       }while(reading[i]<0 || reading[i]>30); 

       do{ 
        printf("Correct answer for essay section[0..25]: "); 
        scanf("%d",&essay[i]); 
        fflush(stdin); 

       }while(essay[i]<0 || essay[i]>25); 
       break; 


      case 2: 
       printf("Name\t\tListening\tReading\tEssay\tScore\tGrade\n"); 
       for(j=0;j<i;j++) 
       { 
        printf("%-1s\t\t%d\t%d\t%d\t%d\n",namamurid[j],listening[j],reading[j],essay[j],score[j]); 
       } 

       break; 
     } 
    } while(option<1 || option>4 || option !=4); 

    getchar(); 
    return 0; 
} 
+2

'"% [^ \ n] s "' -> '"% [^ \ n] "': Das 's' ist nicht Teil der Scanset-Direktive. Beachten Sie auch, dass 'fflush (stdin)' zu undefiniertem Verhalten gemäß Standard führt (obwohl das Verhalten auf einigen Systemen definiert ist) und bestenfalls nicht portierbar ist. Es gibt bessere Möglichkeiten, mit zusätzlichen Zeichen im Eingabestream umzugehen. Sie können möglicherweise ein führendes Leerzeichen zur Formatzeichenfolge hinzufügen, um vorherige Zeilenumbruchzeichen zu verwenden: '"% [^ \ n] "'. –

+0

Zunächst einmal sieht es so aus, als hättest du kein i ++ in deiner Schleife oder so ähnlich. –

+0

Danke für die Antwort Sir. Ich habe es korrigiert. schätze es so sehr <3 – Tha

Antwort

0

Es gibt keine Änderung auf den Wert der Variablen i, die auf 0 während initialization.Hence gesetzt ist, wird es nie in Fall 2 for-Schleife ein.

Verwandte Themen