2016-11-06 62 views
0

我写一个程序,读取用户输入,但我不希望给任何上限,它的大小,所以我决定将它的内存动态如下:字符内存分配

int main(int argc, char const *argv[]) { 
    char ** INPUT; 
    char * inputSize; 
    int cl; 
    printf("Enter your operation here: \n"); 
    scanf("%s", INPUT); 
    for(cl = 0; INPUT[cl] != '\0'; ++cl); 
    inputSize = (char *) malloc((cl + 1) * sizeof(char)); 

return 0; 
} 

这个程序编译和运行,但进入它与下面的错误终止后输入:

Segmentation fault: 11 

我刚开始学习指针,所以我将不胜感激有人指出错误,我正在做。谢谢!

+2

您没有为INPUT分配空间。在你修复之后char **的原因是什么? – drescherjm

+2

要做你想做的事(无限的输入行长度),你需要读取块,如果行不结束块的结尾,你需要阅读更多。一旦读完所有的块(例如链接列表),就可以分配一个缓冲区并将它们组合(如果需要)。 – hyde

+0

噢,我已经改变了它,因为之前我只是分配给INPUT与相同的错误。 –

回答

0

感谢您的帮助,我刚刚使用了getline,并在unsigned_t缓冲区中分配了所有内容。这样可行。