2017-03-15 37 views
0

我想用C編寫一個shell程序。下面的函數應該獲取用戶行輸入。我不斷收到來自void*「無效轉換char**錯誤在哪裏我嘗試的malloc線。使用malloc時無效的轉換錯誤

我不明白爲什麼。任何人都可以解釋一下嗎?

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

你確定你沒有使用C++編譯器 –

+0

無法重現:乾淨的編譯。從''void *''到''char **'''的錯誤從'void *''改爲'char *''的 –

+2

? – BLUEPIXY

回答

2

您可能正在使用C++編譯器/ C++模式,其中有一個從void*T*沒有隱式轉換。在C語言中,你不應該得到這個錯誤作爲void*可以分配給任何其他數據指針沒有明確的轉換。

要麼你可以使用C編譯器,或者如果您必須使用C++編譯器然後適當地轉換。