Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中,如何将输出从一个函数传递到另一个函数?_C_Function_C Strings_Inverse - Fatal编程技术网

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

在C语言中,如何将输出从一个函数传递到另一个函数?,c,function,c-strings,inverse,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

我的程序有两个独立的函数,它排除非素数位置,然后保留该位置的输出。除了我遇到的问题之外,目前它没有按照我希望的方式工作,因为第一个函数排除了非素数位置,然后第二个函数使用原始输入并保留它,而不是函数一的输出。我是新来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);
}
#包括
#包括
无效反转(字符[],长,长);
int main()
{
char-str[50];
int i,j,k,cnt=0;
长尺寸;
printf(“输入:”);
scanf(“%s”,str);
大小=strlen(str);
相反(str,0,大小-1);
printf(str);
返回0;
}
无效反向(字符str[],长索引,长大小)
{
焦炭温度;
temp=str[index];
str[index]=str[size-index];
str[大小-索引]=温度;
如果(索引==大小/2)
{
回来
}
相反(str,索引+1,大小);
}

抱歉说得这么含糊,输入
1234567
的示例输出将是
2357
,然后此输出将转换为
7532
,以下是您的代码的功能(如现在编写的):

  • 从控制台输入字符串
  • 打印出处于“基本位置”(2、3、5、7等)的每个字符,而不修改字符串
  • 反转原始未修改的字符串
  • 打印出相反的字符串
  • 在我看来,您正在寻找的是以下内容:
    当您“从字符串中排除字符”时,您将创建一个新字符串,并使用输入字符串中处于非素数位置的字符填充该字符串。然后将修改后的字符串用作
    reverse()
    函数的参数

    我毫不怀疑,如果您理解上述段落,那么修复代码就不会有问题

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

  • 将字符串输入到
    str
    (与当前操作相同)
  • 引入一个与原始字符串大小相同的新字符串
    str2
  • 在循环中,将
    str
    中的每个字符复制到
    str2
    中未处于“基本位置”的字符
  • 调用
    reverse()

  • 下面是您的代码所做的(正如现在编写的):

  • 从控制台输入字符串
  • 打印出处于“基本位置”(2、3、5、7等)的每个字符,而不修改字符串
  • 反转原始未修改的字符串
  • 打印出相反的字符串
  • 在我看来,您正在寻找的是以下内容:
    当您“从字符串中排除字符”时,您将创建一个新字符串,并使用输入字符串中处于非素数位置的字符填充该字符串。然后将修改后的字符串用作
    reverse()
    函数的参数

    我毫不怀疑,如果您理解上述段落,那么修复代码就不会有问题

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

  • 将字符串输入到
    str
    (与当前操作相同)
  • 引入一个与原始字符串大小相同的新字符串
    str2
  • 在循环中,将
    str
    中的每个字符复制到
    str2
    中未处于“基本位置”的字符
  • 调用
    reverse()

  • 你能再解释一下你的问题吗?在函数
    main
    中,您根本不会更改
    str
    ,因此在
    reverse
    中,您可以使用原始的
    str
    。您能给出一个示例输入和预期的输出吗?我真的不明白你想做什么。
    排除非素数位置,然后保留输出
    ——你说的非素数位置是什么意思?可能是输入错误:反转输出?您在函数reverse中更改了原始值。如果你想重复使用原作。您应该复制第一个函数并将其发送给第二个函数。不是真正的C问题,但更多的是“常识”。@Ijustwanttolearn。提示:如果您想通知用户名,请在用户名前使用
    @
    ,您能再解释一下您的问题吗?在函数
    main
    中,您根本不会更改
    str
    ,因此在
    reverse
    中,您可以使用原始的
    str
    。您能给出一个示例输入和预期的输出吗?我真的不明白你想做什么。
    排除非素数位置,然后保留输出
    ——你说的非素数位置是什么意思?可能是输入错误:反转输出?您在函数reverse中更改了原始值。如果你想重复使用原作。您应该复制第一个函数并将其发送给第二个函数。不是真正的C问题,但更多的是“常识”。@Ijustwanttolearn。提示:如果您想通知用户名,请在用户名前使用
    @
    ,这正是我正在做的。是的,但在如何传递输入方面遇到了困难。“我知道这很可能是我做错了的傻事。”我想学习。正如他所说的,你过滤并打印它,但你从来没有将它保存到数组中。只需创建一个新数组并将过滤后的字符输入其中,然后将新数组传递给
    reverse
    @wolf Just exercise?可能更糟。OP的用户名是“我只想学习”,所以这显然是一个学习任务。那为什么不帮忙呢?;-)我想现在好多了。我不知道这些限制是否真的存在,但我更喜欢用最简单的方法来解决问题。这正是我正在做的。是的,但正在努力解决如何传递输入的问题。“我知道这很可能是我做错了的傻事。”我想学习。就像他说的那样