有一个字符数组的内容为:“student a am i”,
请你将数组的内容改为"i am a student".
要求:
不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//void reverse(char *start,char *end){
char temp;
while (start < end){
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
void reverse_str(char *string1){
char *start = string1;
char *end;
int i = 0;
for (; string1[i]; ++i){
if (string1[i] == ' '){
end = string1 + i - 1;
reverse(start,end);
start = string1 + i + 1;
}
}
end = string1 + i-1;
reverse(start, end);
reverse(string1, end);
}
int main(){
char string1[] = "student am i";
reverse_str(string1);
printf("%s", string1);
system("pause");
return 0;
}
使用库函数:
void reverse_str(char* string1){
char *temp;
char dest[100] = { 0 };
while (temp = strrchr(string1, ' ')){
strcat(dest, temp + 1);
strcat(dest, " ");
*temp = 0;
}
strcat(dest, string1);
strcpy(string1, dest);
}