69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void replaceSpace(char string[]);
int main()
{
char string[] = "I "; //当输入这种字符串是会出错,但当输入如“hello world”时并不报错,
replaceSpace(string);
printf("%s",string);
//free(string);
return 0;
}
void replaceSpace(char string[])
{
int index, spaceNum;
size_t OriginLen, FinalLen;
int OriginIndex, FinalIndex;
index = 0;
spaceNum = 0;
OriginLen = 0;
while(string[index] != '\0')
{
if(string[index] == ' ')
spaceNum++;
OriginLen++;
index++;
}
FinalLen = OriginLen + spaceNum * 2;
realloc(string,FinalLen);
OriginIndex = OriginLen;
FinalIndex = FinalLen;
while(OriginIndex >= 0)
{
if(string[OriginIndex] != ' ')
{
string[FinalIndex] = string[OriginIndex];
}
else
{
string[FinalIndex] = '0';
string[--FinalIndex] = '2';
string[--FinalIndex] = '%';
}
--FinalIndex;
--OriginIndex;
}
}
/*************************************************************************
> File Name: replac.c
> Author: Jukay
> Mail: iloveyouljxcc@163.com
> Created Time: 2014年10月11日 星期六 19时36分06秒
************************************************************************/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
char * replace(char str[]);
int main()
{
char string[] = "Hello csdn, I am new here! Take care after!";
char *res;
res = replace(string);
printf("%s\n",res);
free(res);
res =NULL;
return 0;
}
char *replace(char str[])
{
int space_num=0;
int i=0;
int size;
char *p;
for(;i <strlen(str); i++)
{
if(str[i] == ' ')
space_num++;
}
size = strlen(str) + 2*space_num + 1;
printf("%d\n",size);
p = (char *)malloc(size);
int j;
for(i =0,j =0;i < strlen(str);)
{
if(str[i] == ' ')
{
p[j] ='%'; j++;
p[j] ='2'; j++;
p[j] ='0'; j++;
i++;
}
p[j] = str[i];
j++;
i++;
}
p[size] = '\0';
return p;
}