【发布时间】:2014-04-19 10:13:11
【问题描述】:
这是我的源代码,用于向后打印字符串中的每个单词。但是这段代码只是向后打印第一个单词而不是整个字符串。在向后打印第一个单词后,它会生成向后打印的第一个和第二个单词的模式。如果使用 while 而不是 if 那么它会生成一个无限循环。
// Print an Entered String Backwards
#include <stdio.h>
#include <string.h>
int main()
{
int j,i;
char str[100];
printf("Enter String\n");
gets(str);
printf("\nString in Reverse Order\n");
i=0;
while(str[i]!='\0')
{
if(str[i]==' ')
{
for(j=i-1;j>=0;j--) //Loop starts from last char and decrements upto 0th char
printf("%c",str[j]);
printf(" ");
}
i++;
}
}
【问题讨论】:
-
整理出indetation。顺便说一句 - 这些讲师是否在他们给学生设置的问题上做得更好。 @userX - 学习使用调试器
-
你的逻辑错了。用纸笔勾勒逻辑,手动测试,然后编写程序。
-
@user3551403 - WhozCraig(谢谢)为你修复了它
-
我不明白描述...如果输入是'bar dog',你想要什么输出:'dog bar'或'rab god'或者可能是'god rab'...?
-
@CiaPan 我只想反转 d 个单词的字母但保留单词的顺序。 'bar dog' 的输出应该是 'rab god'
标签: c string infinite-loop