c语言字符串单词逆序

#include<stdio.h>
int my₋strlen(char *plen);
char reverse(char *pstr,char *pend) {    
  char tmp;    
  while(pstr<=pend) {
        tmp=*pstr;
       *pstr=*pend; 
       *pend=tmp;        
        pstr++;        
        pend--;    
        }
   }
  int my₋strlen(char *plen) {//模拟实现strlen    
   char *pstart=plen;    //将数组首元素记下    
   while(*plen++);       //指针++,直到读取\0停止,此时指针还会++一次    
   return plen-pstart-1; //最后地址-首地址=长度
   }
   int main(){
       int i=0;
       char str[100]= {0}; 
       gets(str);   
       int len=my₋strlen(str);   
      reverse(str,str+len-1);//长度-1就是最后一个元素的数组下标
     printf("reverse第一遍,将每个字母逆序\n%s\n",str);    
     //至此实现了字符串中挨个字符的逆序   
    //接着将每个单词正序,读入空格为一个单词   
   //如 I love china. →.anihc evol I→china. love I    
   char* start=str;   
    while(*start) {       
       char *end=start;        
           while(*end!='\0'&&*end!=' ')//找出一个单词的首末地址       
                {          
                        end++;       
                 }          //将这个单词,不包括空格,逆序        
                 reverse(start,end-1);       
                  if(*end==' ')//当end指向空格时,再+1从下一个单词开始reverse           
                        start=end+1;        
                  else            
                        start=end;    
                        }    
                 printf("reverse第二遍,将单词的字母正序回来\n%s",str);
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值