[英]How to pad a string with spaces
我正在尝试创建一个转换以下字符串的函数:
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){
}
在上述情况下,“偏移量”为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;
}
将第一个offset
字符复制到临时缓冲区。 然后一个接一个地循环遍历其余原始缓冲区中的每个字符,然后将它们复制到临时缓冲区中。 每四个循环向临时缓冲区添加一个空间。
尝试这样的事情:
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个字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.