繁体   English   中英

在缓冲区C之前和之后删除20个空格

[英]Remove 20 Spaces before and after buffer C

如何从缓冲区的开头删除20个空格,最后删除20个空格?

我可以运行一个for循环,从20和-20开始,但是如何将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);

创建一个大小为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';

使用strncpy:

char *string = // however you obtain the string
char *new = malloc(strlen(string) - 40 + 1);
strncpy(new, string + 20, strlen(string) - 40);

如果可以接受更改原始缓冲区,则最简单的方法是使用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调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM