我正在尝试创建一个可以在我编写的小程序中调用的 C 函数,以接受用户输入:
char GetStringMine()
{
int i = 0;
char ch;
char * tmpstring = (char *) malloc(2048 * sizeof(char));
while(ch != '\n')
{
ch = getchar();
tmpstring[i++] = ch;
}
tmpstring[i] = '\0';
return * tmpstring;
free(tmpstring);
}
但是它无法编译。 请您告诉我我做错了什么,以及我可以做得更好吗?
最佳答案
第一件事:
在您的代码中,
while(ch != '\n')
调用undefined behavior ,如
ch
是一个自动局部变量,除非显式初始化,否则它包含一个不确定的值。尝试读取不确定的值是 UB。第二件事,
free(tmpstring);
在
return
之后声明根本没有任何作用。只需删除它即可。第三件事:
Please see this discussion on why not to cast the return value of
malloc()
and family inC
. .第四件事:
根据您的
return
语句,函数返回类型应为char *
,而不是char
.
终于
But it does not compile
无法以当前形式回答。您需要在问题中提供更多信息,以阐明“什么”和“如何”。
关于c - C 函数无法接受用户字符串数组输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394512/