我的程序有两个独立的函数,它排除非素位,然后保留输出。除了我遇到的问题之外,目前我的工作方式并不正常,因为第一个函数排除非素数位置,然后第二个函数使用原始输入并保留而不是输出从功能一。我是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
。
答案 0 :(得分:5)
以下是您的代码所做的事情(正如现在所写):
听起来你正在寻找的是以下几点:
当您“从字符串中排除字符”时,您将创建一个新字符串,使用输入字符串中处于非素位置的字符填充该字符串。比将修改后的字符串用作reverse()
函数的参数。
我毫不怀疑,如果您理解上述段落,则修复代码没有问题。
以下是实现您所需要的步骤:
str
(正如您目前所做)str2
的新字符串 50
str
中的每个字符复制到不在“主要位置”的str2
reverse()
,提供str2
作为参数,而不是(当前)str