我需要从用户(通过键盘)获取未知数的字符串,并设置字符串指针数组,以便指向所有输入的字符串。
我定义了一个变量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标准的一部分一样。