如何在C中实时分配用户输入的字符串



我需要从用户(通过键盘)获取未知数的字符串,并设置字符串指针数组,以便指向所有输入的字符串。

我定义了一个变量char tmp_strng[],以使用以下代码来保存用户输入的字符串:

printf("Enter string number %dn",num_of_strngs+1);
fflush(stdin);
scanf("%s",tmp_strng);

之后,我想将更多内存分配给char *str_arr[],这是将指针固定到所有字符串的数组。首先,我通过检查进行内存分配:

if((tmp_str_arr[num_of_strngs]=realloc(str_arr,strlen(tmp_strng)))==NULL)
        {
            free(str_arr);
            printf("Error: couldn't allocate memory. Exiting.");
            return 1;
        }
str_arr[num_of_strngs]=tmp_str_arr[num_of_strngs];
str_arr[num_of_strngs++]=tmp_strng;

那真的没有用...有人可以告诉我这里有什么问题(或正确)吗?我想尽可能地将Realloc()和Scanf()作为主要功能。

使用getline()函数,它将自动malloc()足够的内存以保持线路。用法如下:

char* line = NULL;    //Setting this to NULL is important!
size_t bufferSize;
size_t characterCount = getline(&line, &bufferSize, stdin);
if(characterCount == (size_t)-1) {
    //error handling
} else {
    //do something with this line
    free(line);
}

getline()功能就像 asprintf() posix-2008标准的一部分一样。

相关内容

  • 没有找到相关文章

最新更新