将you are from shanghai 以shanghai from are you的形式输出
#include <string.h>
void func1(char *str, int len);
void func2(char *str);
int main()
{
char s[] = "you are from Shanghai";
func1(s, strlen(s));
printf("%s\n", s);
func2(s);
printf("%s\n", s);
}
void func1(char *str, int len)
{
int i, temp;
for(i = 0; i < len/2; i++)
{
temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
}
}
void func2(char *str)
{
int start = 0;
int len = 0;
int i;
for(i = 0; i <= strlen(str); i++)
{
if(str[i] != ' '&&str[i] != '\0')
{
len++;
}
else
{
printf("start: %d len: %d\n", start, len);
func1(str+start, len);
start = start + len + 1;
len = 0;
}
}
分析:现将整句话倒序,再将其中的每个单词倒序即可
即:you are from shanghai→iahgnahs morf era uoy→shanghai from are you
#include <string.h>
void func1(char *str, int len);
void func2(char *str);
int main()
{
char s[] = "you are from Shanghai";
func1(s, strlen(s));
printf("%s\n", s);
func2(s);
printf("%s\n", s);
}
void func1(char *str, int len)
{
int i, temp;
for(i = 0; i < len/2; i++)
{
temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
}
}
void func2(char *str)
{
int start = 0;
int len = 0;
int i;
for(i = 0; i <= strlen(str); i++)
{
if(str[i] != ' '&&str[i] != '\0')
{
len++;
}
else
{
printf("start: %d len: %d\n", start, len);
func1(str+start, len);
start = start + len + 1;
len = 0;
}
}