通过递归创建字符数组(用户输入)

Creating an array of characters (user-input) through recursion

本文关键字:用户 输入 数组 字符 递归 创建      更新时间:2023-10-16

我正在创建一个程序(其函数必须是递归的),它接受来自用户的一系列字符,以句点结束,并在屏幕上向后显示这些字符。一个示例运行应该给出:

Enter a character: H
Enter a character: i
Enter a character: .
iH

我写了一个函数来反转一个以字符数组及其大小为参数的数组。

void print_backwards(char a[], int size){
    int i = size-1;
    cout << a[i];
    i--;
    if(i >= 0){
        print_backwards(a, i);
    }
}
但是,在使用递归初始化字符数组时,我遇到了一个问题。我该如何解决这个问题?

这听起来像是一个家庭作业问题,所以我不打算为你解决这个问题。不过,我可以给你一个正确的方向。

创建一个函数,通过引用和偏移量获取一个字符数组。
在第一次调用函数时,给它一个0的偏移量,并将空数组传递给它。

函数本身应该从用户处读取一个字符。
如果字符是.,则将一个空字节写入当前位置并返回当前偏移量,否则,将提供的字符写入当前位置,然后以offset+1再次调用该函数。
函数将返回输入的长度。

函数体看起来像

// Get character from user
if ( c == '.' ) {
    input[offset] = '';
    return offset;
} else {
    input[offset] = c;
    return thisFunction(input, offset+1);
}