题目:
给定个字符串,把这个字符串中的空格更改成为%20。
假定这个字符串的空间是够用的。
解法
首先计算空格数目x与非空格数目y。
那么更改之后的字符串长度为3x+y;
计算出长度之后,再从尾部向前拷贝。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *change(char *src) {
int cnt_space = 0, cnt_word = 0;
int len = -1, target_pos;
if (!src) return NULL;
while (src[++len] != '\0') {
cnt_space += ' ' == src[len];
cnt_word += ' ' != src[len];
}
target_pos = cnt_space * 3 + cnt_word;
while (len >= 0) {
if (' ' == src[len]) {
src[target_pos--] = '0';
src[target_pos--] = '2';
src[target_pos--] = '%';
} else {
src[target_pos--] = src[len];
}
--len;
}
return src;
}
int main(void) {
char s[4096];
int read = 0;
while (gets(s) != EOF) {
printf("%s\n", change(s));
}
return 0;
}