编写两个函数
一个函数reverse_string 传入字符数组以及字符数组的首尾下标
一个函数reverse_word 将单词逆序
#include<stdio.h>
#include<stdlib.h>
void reverse_string(char str[],int m,int n) {
char tmp;
for (;m < n;m++,n--) {
tmp = str[m];
str[m] = str[n];
str[n] = tmp;
}
}
void reverse_word(char str[]) {
int bgn = 0, end = 0;
int i;
for (i = 0;str[i];i++) {
if (str[i]==' '){
end = i - 1; //找到空格后 空格字符的前一个字符即为上个单词的末位字母
reverse_string(str, bgn, end);
bgn = i + 1; //将下标移动到空格的下一个字符即下个单词的首个字母
}
}
reverse_string(str, bgn, i - 1); //执行完毕后 最后一个单词还没有完成逆序 因为找不到下一个空格字符
//所以跳出循环后的此时的bgn为最后一个单词的首个字母的下标位置 最后一个单词的末位字母下标为整个字符串的长度-1
reverse_string(str, 0, i - 1); //最后再将整个字符串逆序
}
int main(){
char str[] = "student a am i";
reverse_word(str);
printf("%s\n", str);
system("pause");
return 0;
}