0

如何从缓冲区的开头删除 20 个空格并在结尾删除 20 个空格?

我可以for从 20 和 -20 开始运行一个循环,但如何将每个字符一个字符一个字符地复制到另一个缓冲区,或者是否有一个简单的填充命令?

感谢到目前为止所有帮助现在有效,但只显示大约 20 个字符,即转储中的 MFI-40576-021 部分,它现在确实跳过了开始时的 20 个废话字节。

ReadFile(h,buffer,0x224,&read,NULL);
buffer[read] = '\0'; 
char newbuff[1000];
memcpy(newbuff,buffer+20,sizeof(buffer)-40);
4

3 回答 3

2

创建一个大小为 s-40 的新缓冲区,从源 +20 到大小为 s 的目标执行 memcpy。

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';
于 2012-07-20T20:20:02.890 回答
0

使用 strncpy:

char *string = // however you obtain the string
char *new = malloc(strlen(string) - 40 + 1);
strncpy(new, string + 20, strlen(string) - 40);
于 2012-07-20T20:25:41.827 回答
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调用替换为获取原始缓冲区长度所需的任何代码。

于 2012-07-20T22:46:26.950 回答