码迷,mamicode.com
首页 > 其他好文 > 详细

Pro4 替换空格

时间:2015-04-05 20:23:50      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

本题最大的困难是如何在不新建新的数组下完成空格替换,主要考察数组指针的运用

思路:(1)找出字符串空格的长度,从而确定新的子串尾指针的位置所在;

         (2)通过遍历找出空格,string[indexOfNew--]依次附上%20三个字符,indexOfOriginal--

注:并没有通过实际指针而是通过字符串下标操作,起始时均指向末尾位置

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 /*
 5 *Author xsf
 6 *剑指offer,替换空格
 7 */
 8 //求出传入数组的空格长度
 9 int GetBankLen(char str[])
10 {
11     int BankNum = 0;
12     char *p = str;
13     while(*p!=\0)
14     {
15         if(*p== )
16             BankNum++;
17         p++;
18     }
19     return BankNum;
20 }
21 /*置换空格的函数
22 length是字符数组string的总容量
23 */
24 void ReplaceBlank(char string[],int length)
25 {
26     if(string==NULL||length<=0)//安全性判断
27         return;
28     int BankNum = GetBankLen(string);//获取输入string的空格数目
29     int newLength = length + BankNum*2; //移动数组后的总长度
30 //    char *str1 = string+length-1;//第一个指针指向数组的最后\0位置
31 //    if(*str1 ==‘\0‘)
32 //        printf("指向了最后的\0");
33 //    char *str2 = string+newLength-1;//第二个指针指向替换后的最后\0位置
34     /*移动指针*/
35     int indexOfOriginal = length;
36     int indexOfNew = newLength;
37     while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)
38     {
39         if(string[indexOfOriginal]== )//当遇到空格,则在新的加上%20
40         {
41 //            printf("遇到空格/n");
42             string[indexOfNew--] = 0;
43             string[indexOfNew--] = 2;
44             string[indexOfNew--] = %;
45         }
46         else
47             {
48                 string[indexOfNew--] = string[indexOfOriginal];
49             }
50         indexOfOriginal--;
51 
52     }
53 }
54 
55 int main(int argc,char *argv[])
56 {
57     char string[] = "X S F";
58     int Totallen = sizeof(string)/sizeof(char);//包含/0
59 //    int Strlen = strlen(string);//不包含/0
60     printf("替换前%s\n",string);
61     ReplaceBlank(string,Totallen);
62     printf("替换后%s\n",string);
63 //    printf("len=%d\n",Totallen);
64 //    printf("str=%d\n",Strlen);
65 //    int BankNum = GetBankLen(string);
66 //    printf("空格长度为%d\n",BankNum);
67 
68 }

 

Pro4 替换空格

标签:

原文地址:http://www.cnblogs.com/xsfelvis/p/4394620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!