2016-04-08 11 views
0

Ich spiele nur mit einem einfachen c-Code herum. Ich möchte alle Tage string in den Tagen Array-Zeiger drucken. Ich laufe jedoch zu Segmentierungsfehler. Das Problem liegt in der for-Schleife. Was mache ich hier falsch? DankChar-Array Segmentierungsfehler

main(){ 
    const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",\ 
         "Thursday", "Friday", "Saturday", "Sunday"}; 
    int i; 

    for(i = 0; i < sizeof(days); ++i) 
    printf("%s\n", days[i]); 
} 
+3

der Operator 'sizeof' gibt eine Größe in Bytes zurück, dividiere durch' sizeof (* days) ', um die Anzahl der Elemente in einem Array zu erhalten – BeyelerStudios

Antwort

2
int main(){ 
    const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",\ 
         "Thursday", "Friday", "Saturday", "Sunday"}; 
    size_t i; 
    for(i = 0; i < sizeof days/sizeof days[0]; ++i) 
    printf("%s\n", days[i]); 
} 

sizeof day ergibt die Größe des gesamten Array, so dass Sie es mit der Größe eines seiner Elemente zu unterteilen, die Anzahl des Elements, um es enthält.

+0

Dank an alle für Hilfe –

2

die for Anweisung

ändern

for(i = 0; i < (sizeof(days)/sizeof(days[0])); ++i)

Der sizeof Ausdruck gibt Ihnen die Anzahl der Elemente in der Anordnung, in Bezug auf die Anzahl von Bytes gegen es

Einen klassischen Weg, dies zu tun, nimmt ist ein Makro

#define SIZEOF(X) (sizeof(X)/sizeof(X[0]))

und dann SIZEOF anstelle sizeof