[英]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.