2017-03-15 10 views
0

Ich versuche, ein Shell-Programm in C zu schreiben. Die folgende Funktion soll Benutzerzeile-Eingabe erhalten. Ich halte eine „ungültige Umwandlung von void* zu char** Fehler auf der Leitung empfangen, wo ich malloc versuchen.Ungültiger Konvertierungsfehler bei der Verwendung von malloc

Ich verstehe nicht, warum. Kann mir jemand erklären?

char *get_line_input(void) 
{ 
    int scan; 
    int buff_size = 1024; 
    int argument_tracker = 0; 
    char *line = malloc(sizeof(char) * buff_size); 

    while (1) { 
    scan = getchar(); 
    if (scan == '\n') { 
     line[argument_tracker] = '\0'; 
     return line; 
    } else { 
     line[argument_tracker] = scan; 
    } 
    argument_tracker++; 
    } 
} 
+3

Sind Sie sicher, dass Sie eine c nicht mit ++ Compiler –

+0

nicht reproduzieren kann: saubere Kompilierung. –

+2

von '' void * ''zu' 'char **'' Tippfehler von '' void * ''zu' 'char *''? – BLUEPIXY

Antwort

2

Sie sind wahrscheinlich eine C++ Compiler/C++ Modus, in dem es von void* zu T*. In C keine implizite Konvertierung ist, sollten Sie nicht diesen Fehler als void* kann auf jeden anderen Datenzeiger ohne explizite Umwandlung zugeordnet werden.

Entweder können Sie einen C-Compiler oder wenn Sie Sie müssen den C++ - Compiler verwenden und dann entsprechend casten.

1

Weil void * nicht implizit zu char * in C++ konvertiert werden kann und Sie wahrscheinlich C++ verwenden. Quick Fix:

char *line = (char *)malloc(sizeof(char) * buff_size); 

sollten Sie lesen Do I cast the result of malloc?

Verwandte Themen