2017-04-22 4 views
-4

Wenn ich wie folgt schreibe, tritt ein Segmentierungsfehler auf. Aber wenn ich printf(messages[0]) oder printf(messages[1]) schreibe, habe ich keinen Fehler. WARUM? Ich wollte alle Mitglieder des Arrays mit "für" drucken.Segmentierungsfehler für die Verwendung von Array

void givetag(char *array[]); //define function 

int main() 
{ 
    char* messages[3]; 
    givetag(messages); //sub function 
    int i; 
    for(i=0;i<3;i++) 
    { 
     printf(messages[i]); 
    } 
} 

void givetag(char *array[]) 
{ 
    int i; 
    for(i=0; i<3; i++) 
    { 
     array[i]= (char*) malloc(10); 
     scanf("%s", array[i]); 
    } 
} 
+1

Übersetzen Sie als C oder C++? Bitte markieren Sie nicht beide. – aschepler

+1

Kann nicht reproduziert werden. http://coliru.stacked-crooked.com/a/3a956a1207bc2bc3 – aschepler

+1

Zeigen Sie uns Ihre Eingaben. – BLUEPIXY

Antwort

0
#include <stdio.h> 
#include <stdlib.h> 

void 
givetag(char *array[]) 
{ 
    int i; 
    for(i=0; i<3; i++){ 
     array[i]= (char*) malloc(100); 
     scanf("%s", array[i]); 
    } 
} 

int main() 
{ 
    char* messages[3]; 
    givetag(messages); //sub function 

    int i; 

    for(i=0;i<3;i++) { 
     printf(messages[i]); 
    } 

    printf("\n"); 

    return 0; 
} 

wie Sie im Bild von heraus gesetzt zu sehen, Sie malloc Größe müssen hinzufügen (i ändern Code).

1

Verwandte Themen