如何用空格填充字符串

时间:2012-12-04 14:29:06

标签: c string

我正在尝试创建一个转换以下字符串的函数:

1110100010000000101000011000011110000000000000000000000000111101110000110101100111

为:

1110100010000000 1010 0001 1000 0111 1000 0000 0000 0000 0000 0000 0011 1101 1100 0011 0101 1001 11

(四个1/0的组)

有些功能如下:

convert(char *src_buffer,char *dst_buffer,int offset){

}

其中“offset”在上述情况下为16。

这是我尝试过的代码:

char *tmp=(char*)malloc(1000*sizeof(char));
strncpy(tmp,buffer,i);
tmp[i+1]=' ';
for(int j=0;j<sizeof(buffer);j++){
    strcpy(tmp+sizeof(tmp),buffer+(4*j));
    tmp[(5*j)+1]=' ';
}

但它不起作用......

请帮忙!我希望那里有一位可以帮助我的C大师。

以下是我一直在处理的一些更新代码:

char *tmp=(char*)malloc(1000*sizeof(char));
strncpy(tmp,buffer,offset);
tmp[offset+1]=' ';
int k=offset+1;
for(int j=i;j<strlen(buffer);j+=4){
    tmp[k]=buffer[j];
    tmp[k+1]=buffer[j+1];
    tmp[k+2]=buffer[j+2];
    tmp[k+3]=buffer[j+3];
    tmp[k+5]=' ';
    k+=5;
}

2 个答案:

答案 0 :(得分:3)

将第一个offset个字符复制到临时缓冲区。然后逐个循环其余原始缓冲区中的每个字符,将它们复制到临时缓冲区中。每隔四个循环就会为临时缓冲区添加一个空格。

答案 1 :(得分:2)

尝试这样的事情:

int len = strlen(src);
char *dst= malloc(len * sizeof *dst * 2);
/* copy the first (offset) bytes */
strncpy(dst, src, offset); 

for(i=j=offset; j<len; i++, j++){
    /* add a whitespace and once every 5 characters */
    if ((i-offset)%5 == 0) { 
       dst[i++] = ' ';
    }
    dst[i] = src[j];
}
/* null-terminate string */
dst[i]=0;

作为旁注,如果每个字符后跟一个空格(不是这种情况),那么你需要的最大值是原始字符串的两倍,所以不需要分配1000个字节。

相关问题