#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 512
int main() {
char s[maxn] = { 0 };
char *p;
int i=0,j=0,count = 0;
while (gets(s) != NULL) {
count = 0,i=0;
while (s[i]) {
if (s[i] == ' ') {
count++;
}
i++;
}
p = (char *)calloc(1, strlen(s) + 3 * count + 1);
for (i = strlen(s) - 1, j = strlen(s) + 3 * count - 1; i >= 0; i--) {
if (s[i] == ' ') {
p[j] = '0';
p[j - 1] = '2';
p[j - 2] = '0';
p[j - 3] = '%';
j = j - 4;
}
else {
p[j] = s[i];
j--;
}
}
printf("%s\n", p);
free(p);
p = NULL;
}
return 0;
}
Notes:
j = strlen(s) + 3 * count - 1
假设你字符串长度是30,你申请了31字符的空间,你最后一个字母的位置是s[29],肯定不是s[30]. s[30]是结束符。数组下标是从0开始的。

该博客展示了如何使用C语言处理空格,并将含有空格的字符串转换为URL编码格式。代码通过读取输入的字符串,计算空格数量,然后分配内存并进行反转处理,将每个空格替换为'%20'。最后,打印出处理后的字符串并释放内存。
285

被折叠的 条评论
为什么被折叠?



