您的位置:首页 > 编程语言 > C语言/C++

C语言实现字符串中把空格换成%20问题

2015-04-09 20:57 323 查看
今天在笔试的时候遇到了一个题目,现在记录下来学习学习,题目就是把字符串中的空格换成“%20”,遇到这个问题会想到“%20”是一个字符还是3个字符,我当时就认为2个字符,'%','2','0'.

实现这个代码的基本思想是:确定字符串数组的长度,和空格的个数,最后得到的字符串的长度为原字符串长度+2空格个数,从最后一个符号进行复制就可以了。

#include<stdio.h>

void blankreplace(char *s)

{

int i,nlength,blank=0;

int length;

for(i=0;s[i]!='\0';i++);

length=i;

for(i=0;i<=length;i++){

if(s[i]==' ')

blank++;

}

nlength=length+2*blank;

for(i=length;i>=0;i--){

if(s[i]!=' ')

s[nlength--]=s[i];

else{

s[nlength]='0';

s[nlength-1]='2';

s[nlength-2]='%';

nlength-=3;

}

}

}

void main()

{

char s[]="we are not happy";

int i=0;

while(s[i]!='\0')

printf("%c",s[i++]);

printf("\n");

blankreplace(s);

i=0;

while(s[i])

printf("%c",s[i++]);

}

在这个代码中会出现一个问题,我也不知道什么问题,提示就是stack around the s was corrupted,我在网上查找了资料,有关的解释和解决办法见http://www.cnblogs.com/flysnail/archive/2011/09/21/2184114.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐