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

时间:2017-02-15 09:43:49

标签: c function c-strings inverse

我的程序有两个独立的函数,它排除非素位,然后保留输出。除了我遇到的问题之外,目前我的工作方式并不正常,因为第一个函数排除非素数位置,然后第二个函数使用原始输入并保留而不是输出从功能一。我是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 个答案:

答案 0 :(得分:5)

以下是您的代码所做的事情(正如现在所写):

  1. 从控制台输入字符串
  2. 打印出处于“黄金位置”的每个角色(2,3,5,7等)而不修改字符串
  3. 撤消原始未经修改的字符串
  4. 打印出反向字符串
  5. 听起来你正在寻找的是以下几点:
    当您“从字符串中排除字符”时,您将创建一个新字符串,使用输入字符串中处于非素位置的字符填充该字符串。比将修改后的字符串用作reverse()函数的参数。

    我毫不怀疑,如果您理解上述段落,则修复代码没有问题。

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

    1. 将字符串输入str(正如您目前所做)
    2. 引入与原始字符串相同大小str2新字符串 50
    3. 在您的循环中将str中的每个字符复制到不在“主要位置”的str2
    4. 致电reverse(),提供str2作为参数,而不是(当前)str