2017-02-16 1 views
1

Ich schreibe ein Programm, um Namen und die Anzahl der Apartments anzuzeigen. Mein Array, in dem die Namen gespeichert sind, kann die Namen jedoch nicht anzeigen. Gibt es trotzdem eine Zeichenfolge, die im Array enthalten sein muss? Außerdem scheint es, dass ich den Wert von n unter der Anzahl der Apartments im Display anzeigen lasse, gibt es das sowieso, um es los zu werden? Hier ist mein Code:Das Programm gibt keine im Array gespeicherte Zeichenfolge aus.

#include <stdio.h> 

int main(void) 
{ 
    int i; 
    char name[] = {North, West, South, East}; 
    int apt[] = {24, 30, 14, 18}; 
    const int n = 5; 

    printf("Name No. of Apartments\n"); 
    for (i = 0; i < n; i++) 
      printf("%c  %d\n", name[i], apt[i]); 

    return 0; 

} 
+0

Ihr Code überhaupt nicht einmal kompilieren. Die Probleme, die Sie beschreiben, scheinen nicht mit dem von Ihnen geposteten Code zu korrelieren. 'char name [] = {Norden, Westen, Süden, Osten};' ist völlig ungültig, für Anfänger - Sie haben nicht einmal die Strings in Anführungszeichen gesetzt, geschweige denn, das Array korrekt zu definieren. Du willst 'char * name [] = {" Norden "," Westen "," Süden "," Osten "}' –

+0

Siehe ob http://stackoverflow.com/questions/9907160/how-to-convert-enum- names-to-string-in-c ist gut für Sie – chux

+0

Versuchen Sie, die Namen in doppelte Anführungszeichen setzen, '" North ", ...' – AntonH

Antwort

1

Sie deklarieren einen Namen als ein eindimensionales Array, wenn es ein zweidimensionales Array sein muss.

char name[number of names][length of longest name + 1]

Zusätzlich werden die Strings für die Richtungsnamen verwendet werden, müssen in doppelte Anführungszeichen gekapselt werden. So sollte Ihre Erklärung wie folgt aussehen:

char name[4][6] = {"North", "West", "South", "East"};

Wenn ein Zeichenfeld Drucken, die Bezeichner% s verwenden. % C wird nur für einzelne Zeichen verwendet:

printf("%s %d\n", name[i], apt[i]);

Da zusätzlich die for-Schleife bei Index 0 beginnt, 'n' sollte 5-4 geändert werden:

const int n = 4;

+0

Ich dachte nicht, ein zweidimensionales Array zu verwenden, da ich nur von eindimensionalen Arrays gelernt habe.Klar und prägnant, danke für Ihre Hilfe. – Jinto

1

Was erscheint aus Ihrer Frage ist, dass Sie neu sind das Konzept von strings in C. So müssen Sie über das Array von Zeigern wissen.

Lösung

#include <stdio.h> 

int main(void) { 
    // your code goes here 
    int i; 

    char *name[4];//Array of pointers to store 2d array of characters. 
    name[0]="North";name[1]="West";name[2]="South";name[3]="East"; 
    int apt[] = {24, 30, 14, 18}; 
    const int n = 5; 
    printf("Name No. of Apartments\n"); 
    for (i = 0; i < n; i++) 
      printf("%s  %d\n", name[i], apt[i]); 

    return 0; 
} 

Und da Anzahl von Strings im Array ist 4 nur, so sollten Sie die Schleife für n=5 mal nicht ausführen, wird es einige Müll Wert für i=4 produzieren.

2

Hier ist der Code, korrigiert:

#include <stdio.h> 

int main(void) 
{ 
    int i; 
    char *name[] = {"North", "West", "South", "East"}; /* You're declaring an array of characters, you need an array of strings/pointers */ 
    int apt[] = {24, 30, 14, 18}; 
    const int n = 4; /* you have 4 elements in your array, not 5 */ 

    printf("Name No. of Apartments\n"); 
    for (i = 0; i < n; i++) 
     printf("%s %d\n", name[i], apt[i]); /* %c is for characters, you need %s for strings */ 

    return 0; 
} 
Verwandte Themen