【发布时间】:2019-08-20 06:26:17
【问题描述】:
我正在做一个任务,我必须实现一个函数 reverse(),它可以反转索引 i 和 j 之间的字符串。 reverse(str, 0, 4) 将索引0和4之间的字符串从apple反转到elppa。通过查找每个单词的开始和结束位置并反转单词,可以反转所有单词。
void reverse(char *str, int i, int j). for example
用户输入:
apple orange banana
将输出:
elppa egnaro ananab
但我的代码什么也没打印。我知道有很多错误,但我被卡住了,不知道如何从这里开始。 我的代码是:
#include <stdio.h>
#include <string.h>
void reverse(char *str, int i, int j);
int i, j, k, len, ind, temp;
char str[100];
int main()
{
printf("Enter a string: \n");
gets(str);
len = strlen(str);
reverse(str, i, j);
return 0;
}
void reverse(char *str, int i, int j)
{
for (i = 0; i < len; i++)//
{
ind = i;
//index of the end of each word
if (str[i] == ' ' || str[i] == '\n')//ends at index of whites space
{
ind = i - 1;//index of empty space -1
i= 0;//i is reset to 0
if (i <= ind)//0<last index of word
{
//reverse
temp = str[i];
str[i] = str[ind];
str[ind] = temp;
}
}
}
printf("%s\n",str[i]);
}
【问题讨论】:
-
你有一个无限循环,因为 i 被重置为 0。
-
您的描述中有相互矛盾的信息:您是要反转 i 和 j 之间的字符串,还是要单独反转 i 和 j 之间找到的所有单词? ——我假设是后者。在这种情况下,我强烈建议您将问题分解为多个部分,并单独解决它们:一个用于反转字符串的函数,一个用于在字符串中查找单词的函数,以及一个用于将反转函数迭代地应用于所有单词的函数,因此找到了。
标签: c string loops char reverse