五、倒置字符串
一个巧妙的思路:
- 将字符串倒序
- 将倒序字符串中每个单词正序
难点:
1. 获取完整字符串的方法
#include<stdio.h> int main() { char ch[101]={0}; //1 gets(ch); //2 fgets(ch,100,stdin)//fgets(字符串放入位置,字符串大小,stdin 键盘) //3 scanf("%[^\n]s",ch);//一直读,读到'\n'结束 return 0; }
2.倒序字符串
void reverse(char* start,char* cur) { while(start<cur) { char tmp=*start; *start=*cur; *cur=tmp; start++; cur--; } }
3.倒置字符串的逻辑
#include<stdio.h> #include<string.h> int main() { char ch[101]={0}; gets(ch); //fgets会接收'\n' 作为字符串中除'\0'以外的最后一个字符 int len=strlen(ch); reverse(ch,ch+len-1); char* start=ch; char* cur=ch; while(*cur) { //找到每一个单词所占长度 while(*cur !=' '&&*cur !='\0') { cur+; } //单词正序 reserve(start,cur-1); start=cur+1; //当*cur指向'\0'时,结束while循环 if(*cur!='\0') cur++; } printf("%s\n",ch); return 0; }