首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么给字符串添加空格

2012-10-15 
如何给字符串添加空格在网上看到一个算法题。大意是:写一个函数fun(char *str,char ch),完成如下功能:1、删

如何给字符串添加空格
在网上看到一个算法题。大意是:写一个函数fun(char *str,char ch),完成如下功能:
1、删去字符串中指定的字符 2、传回的字符串的字符间加个空格。
例如:给出的字符串为:A[]=abcdefabcdaefa 输入字符a 
  输出的字符串为:B[]=b c d e f b c d e f

小弟完成的代码如下,但是最后输出的是 bcdefbcdef,不知道错在哪里,还请各位大侠帮忙指教,谢谢。

C/C++ code
char *fun(char *str,char c){    int i=0,j=0;        char *str1;        int len=strlen(str);    for(i=0;i<len;i++)    {              if(str[i] == c)         continue;         str[j++]=str[i];    }        str[j++]='\0';    str1 = (char *)malloc(2*(strlen(str))+1);    for(i=0;i<j;i++)    {             str1[2*i]=str[i];         str1[2*i+1]=' ';    }             return str1;            }


[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>#include <stdlib.h>char *fun(char *str,char c){    int i=0,j=0;        char *str1;        int len=strlen(str);    for(i=0;i<len;i++)    {              if(str[i] == c)         continue;         str[j++]=str[i];    }        str[j++]='\0';    str1 = (char *)malloc(2*(strlen(str))+2); // 这里要多加一个    for(i=0;i<j;i++)    {             str1[2*i]=str[i];         str1[2*i+1]=' ';    }             return str1;            }int main(void){    char str[] = "abcdefabcdaefa";    char *str2 = fun(str, 'a');    printf("%s\n", str2);    if (str2)    {        free(str2);        str2 = NULL;    }    return 0;}
[解决办法]
int BigLen=MAX(2*(strlen(str))+1, strlen(str)+1);
str1 = (char *)malloc(BigLen);
[解决办法]
你穿出字符串不是动态分配的吗,跟给出的字符串长度没关, 貌似malloc里面要多加1
[解决办法]
我直接copy的你的代码:
然后只是增加了main函数,调用代码如下:
char str[]="abcdefabcdaefa";
char *p = fun(str, 'a');
printf("%s \n", p);

圆满的输出了正确的结果
我没有使用集成工具运行,就是简单的在linux的命令行下执行的

不知道以上回答对你有没有用,祝你顺利
[解决办法]
探讨
程序有误,更正:
C/C++ code
char *fun(char *str,char c)
{
char *str1;
int i=0,j=0;
int len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i] == c) 
continue;
str[j+……

热点排行