如何在 C 中将一个函数的输出传递给另一个函数?

How to pass output from one function to another in C?

我的程序有两个独立的函数,它排除非主要位置,然后保留输出。除了我遇到的问题是目前它没有按照我想要的方式工作,因为第一个函数排除了非主要位置,然后第二个函数使用原始输入并保留它而不是函数的输出一。我是 C 的新手,所以请放轻松。

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

void reverse(char[], long, long);
int main()
{
    char str[50];
    int i, j, k, cnt = 0;
    long size;

    printf("Enter: ");
    scanf("%s", str);

    size = strlen(str);
    reverse(str, 0, size - 1);
    printf(str);
    return 0;
}

void reverse(char str[], long index, long size)
{
    char temp;
    temp = str[index];
    str[index] = str[size - index];
    str[size - index] = temp;
    if (index == size / 2)
    {
        return;
    }
    reverse(str, index + 1, size);
}

抱歉这么含糊,输入 1234567 的示例输出将是 2357 然后此输出反转为 7532

这是您的代码的作用(正如现在编写的那样):

  1. 从控制台输入字符串
  2. 打印出 "prime position" 中的每个字符(2、3、5、7 等)而不修改字符串
  3. 反转原始的、未修改的字符串
  4. 打印出反转的字符串

我觉得你要找的是以下内容:
当您 "exclude characters from a string" 时,您创建了一个 新字符串 ,您用输入字符串中位于 non-prime 位置的字符填充该字符串。比您使用修改后的字符串作为 reverse() 函数的参数。

我毫不怀疑,如果您理解了上面的段落,那么修复您的代码就没有问题了。

以下是实现您需要的步骤:

  1. 将字符串输入 str(如您目前所做的那样)
  2. 引入一个新字符串 str2 与原始字符串50 大小相同
  3. 在你的循环中将 str 中的每个字符复制到 str2 中,但不在 "prime position"
  4. 调用 reverse() 提供 str2 作为参数,而不是(当前)str