如何在C语言中使用递归改变单词在句子中的位置?

tmb3ates  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(111)

如何用递归函数将ABC DEF GHI转化为GHI DEF ABC?

void reverse(char *str)
{
    if (*str)
    {
        if(str != ' ')
        {
            str += 1;
        }
        reverse(str+1);
        printf("%c", str);
    }
}
htrmnn0y

htrmnn0y1#

printf说明符%s可以与*precision 一起使用,这允许您传递一个整数值(作为int),指定要从字符串读取的最大字节数。
strspnstrcspn可用于查找字符串中的 * span *,分别由在其第二个参数中找到或未找到的字符组成。
这些函数一起使用时,我们可以跳过前导空格,并找到由空格分隔的每个子字符串的长度。

#include <stdio.h>
#include <string.h>

void print_sentence_backwards(const char *sent)
{
    sent += strspn(sent, " ");    
    
    if (*sent) {
        size_t n = strcspn(sent, " "); 
        print_sentence_backwards(sent + n);
        printf("%.*s ", (int) n, sent);
    }
}

int main(void)
{
    print_sentence_backwards("ABC DEF GHI");
    putchar('\n');
}
GHI DEF ABC

相关问题