如何从缓冲区的开头删除20个空格,在结尾处删除20个空格?
我可以在20和-20开始运行for
循环,但是如何将每个char按char复制到另一个缓冲区,或者是否有简单的填充命令?
感谢目前为止提供的所有帮助,但只显示了大约20个字符,即转储中的MFI-40576-021部分,它现在跳过了20个垃圾字节。
ReadFile(h,buffer,0x224,&read,NULL);
buffer[read] = '\0';
char newbuff[1000];
memcpy(newbuff,buffer+20,sizeof(buffer)-40);
答案 0 :(得分:2)
创建一个大小为s-40的新缓冲区,从源+20到目标的memcpy执行大小为s。
int read; //assumed
char buffer[0x224];
ReadFile(h,buffer,0x224,&read,NULL);
if(read-40 <=0) return;
char *newvar = (char*)malloc(read - 40 + 1); // Fails with void to char error
strncpy(newvar, buffer+20, read - 40);
newvar[read-40] = '\0';
答案 1 :(得分:0)
使用strncpy:
char *string = // however you obtain the string
char *new = malloc(strlen(string) - 40 + 1);
strncpy(new, string + 20, strlen(string) - 40);
答案 2 :(得分:0)
如果可以接受更改原始缓冲区,则最简单的方法是使用memmove
:
char* string = /* insert code here to obtain the string */;
size_t len = strlen(string) - 40; // Number of bytes to move
memmove(string, string + 20, len); // Move string down by 20 bytes
memset(&string[len], 0, 40); // Clear out the remaining buffer
如果缓冲区中的数据不是字符串,则此常规过程也将起作用。您只需要使用获取原始缓冲区长度所需的任何代码替换strlen
调用。