反向单词函数中的最后一个单词



我有这个反向单词函数。它只是将单词按相反的顺序添加到新字符串中。这个代码的问题是它没有打印最后一个单词(反转前的第一个单词(。我不知道为什么。请帮我修一下代码

char str[100], revstr[100];
int i, j, index, len, startIndex, endIndex;
printf("n Please Enter any String :  ");
gets(str);
len = strlen(str);
index = 0;
endIndex = len - 1;
printf("n *****  Given String in Reverse Order  ***** n");        
for(i = len - 1; i > 0; i--)
{
if(str[i] == ' ')
{
startIndex = i + 1;
for(j = startIndex; j <= endIndex; j++)
{
revstr[index] = str[j];
index++;
}
revstr[index++] = ' ';
endIndex = i - 1;               
} 
}
printf("n Given String in Reverse Order = %s", revstr); 
return 0;

这里有一个工作代码:

char str[100], revstr[100];
int i, j, index, len, startIndex, endIndex;
printf("n Please Enter any String :  ");
gets(str);
len = strlen(str);
index = 0;
endIndex = len - 1;
printf("n *****  Given String in Reverse Order  ***** n");        
for(i = len - 1; i >= -1; i--)
{
if(i == -1){
startIndex = i + 1;
for(j = startIndex; j <= endIndex; j++)
{
revstr[index] = str[j];
index++;
}
revstr[index++] = ' ';
endIndex = i - 1;  
break;
}
if(str[i] == ' ')
{
startIndex = i + 1;
for(j = startIndex; j <= endIndex; j++)
{
revstr[index] = str[j];
index++;
}
revstr[index++] = ' ';
endIndex = i - 1;               
} 
}
printf("n Given String in Reverse Order = %s", revstr); 

问题是,只有在单词前面有空格的情况下,你才会包含它。第一个单词之前不会有空格,因此我将代码放在第一个字母之前,并始终强制包含第一个单词。如果文本中的空格超过所需的空间,则可能会破坏此代码。

最新更新