五、倒置字符串
一个巧妙的思路:
- 将字符串倒序
- 将倒序字符串中每个单词正序
难点:
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;
}