gpt4 book ai didi

c - 使用递归读入一行并返回指向该字符串的指针

转载 作者:行者123 更新时间:2023-11-30 19:25:30 25 4
gpt4 key购买 nike

我需要创建一个 char *read_line(void) 函数,它递归地读入一个字符,因此每次递归调用它都会创建一个本地 char 变量,当读入输入字符时,它可以确定需要多少内存被分配,以便它最终可以返回一个指向字符串的指针。该字符串必须以\0 终止符结尾。我只能使用一次 malloc 调用,不能使用任何全局或静态变量或任何其他容器。我可以使用任何自定义辅助函数。禁用词:realloc;calloc;strcpy;strncpy;10我知道这是不切实际的,但这是一项家庭作业。

最佳答案

最后的调用需要执行

char *str = malloc(i+1);
str[i] = 0;
return str;

需要执行其他调用

char *str = read_line_helper(...);
str[i] = ch;
return str;

这意味着每个调用都需要一个比调用者多 1 的 i。通过将 i+1 传递给递归函数可以轻松实现这一点。

char *read_line_helper(size_t i) {
char ch = ...;

char *str;
if (...) {
str = malloc(i+1);
str[i] = 0;
} else {
str = read_line_helper(i+1);
str[i] = ch;
}

return str;
}

第一次调用需要 0

char *read_line(void) {
return read_line_helper(0);
}

关于c - 使用递归读入一行并返回指向该字符串的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com