有一个字符数组的内容为:“student a am i”,
请你将数组的内容改为"i am a student".
要求:
不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
student a am i
i ma a tneduts
i am a student
#include<stdio.h>
#include <stdlib.h>
//逆转整个字符串
void reverse_str(char* start,char* end){
while (start < end){
char temp = *start;
*start = *end;
*end = temp;
++start;
--end;
}
}
int Strlen(char* str){
int count = 0;
while (*str++){
++count;
}
return count;
}
void reverse(char* str){
char* cur = str;
int len = Strlen(str);
//整体逆转
reverse_str(str, str + len - 1);
//局部逆转
while (*cur){
char* start = cur;
while (*cur != ' ' && *cur != '\0'){
++cur;
}
//逆转当前单词
reverse_str(start, cur - 1);
//走到下一个单词
while (*cur == ' '){
++cur;
}
}
}
int main(){
char str[] = "student a am i";
printf("%s\n",str);
reverse(str);
printf("%s\n",str);
system("pause");
return 0;
}