有一个字符数组的内容为:“student a am i”,请你将数组的内容改为"i am a student".
主要实现:先把每个单词逆序,在整体逆序输出。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
void reserves(char *start,char *end)
{
while(start<end)
{
*start ^= *end;
*end ^= *start;
*start ^=*end;
start++;
end--;
}
}
int main()
{
char arr[]= "student a am i" ;
int sz = sizeof(arr)/sizeof(arr[0]);
char *p = arr;
char *q = p;
while(*q)
{
if(isspace(*q))
{
reserves(p,q-1);
q++;
p=q;
}
else
{
q++;
}
}
reserves(p,q-1);
reserves(arr,q-1);
printf("%s\n",arr);
system("pause");
return 0;
}
利用库函数
#include<string.h>
#include <stdio.h>
int main()
{
char str[] = "student a am i";
char tmp[100] = "";
char *ptmp = str;
while (ptmp = strrchr(str, ' '))
{
strcat(tmp, ptmp + 1);
strcat(tmp, " ");
*ptmp = '\0';
}
strcat(tmp, str);
strcpy(str, tmp);
printf("%s", str);
return 0;
}