2016-12-04 68 views
0

我想寫一個程序,它應該接收一個字符串形式的輸入, 並且這個輸入將保存在一個動態數組中,所以我使用了一個例如20 * sizeof的malloc,並且如果字符串的大小更長比我分配內存,改善它的大小。但是,我收到了崩潰,無法通過realloc提高它的大小。我如何重新分配c中的malloc返回null後的動態數組?

我該怎麼辦?

這是我的代碼:

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

int main() { 

    char *user; 
    int n = 0; 
    user = (char*)malloc(20*sizeof(char)); 
    scanf("%s",user); 
    n = strlen(user); 
    user = (char*)realloc(user,n); 

    return 0; 
} 

回答

0

最簡單的方法是使用m修改在scanf:

char *user = 0; 
scanf("%ms", &user); 
// use 'user' -- will be null if there was an error reading. 

不幸的是,這僅僅是對POSIX系統上可用。在其他系統上,您需要編寫自己的循環讀取字符getchar,並在您閱讀時根據需要重新分配。

相關問題