如何检查要分配的内存量?

时间:2013-10-05 20:45:06

标签: c

代码:

int messageFunction(char* message) {
   char* sPtr = strstr(message,"Subject:");
   char* cPtr = strstr(message,"Content:");

   // here is the part I'm stuck at
   char* messageSubject = (char*) malloc(...)
   char* messageContent = (char*) malloc(...)
   ...

   }

void main() {
  char* message = "Subject:HelloWorldContent:MessageContent";
  int result = messageFunction(message);
 }

我想为主题“HelloWorld”和内容“MessageContent”(需要动态工作)分配内存。

也许我需要做这样的事情来计算messageSubject

strlen(message) - strlen(cPtr之后的子字符串) - strlen("Subject:")

对于messageContent

strlen(message) - strlen(cPtr之前的子字符串) - strlen("Content:")

但我不确定如何获得“cPtr之后的子串”和“cPtr之前的子串”?

1 个答案:

答案 0 :(得分:2)

我假设你的意图是消息中的Hello worldMessageContent malloc:

   char* sPtr = strstr(message,"Subject:");
   char* cPtr = strstr(message,"Content:");

   char* messageSubject = (char*) malloc(cPtr - sPtr - strlen("Subject:") + 1);     

我还假设Content:是最后一个标记,并且内容后面有字符串结尾。您不需要在此处进行分配和复制(尽管您可能会这样做)。

   char* messageContent = CPtr + strlen("Content:");     

如果你也想要malloc:

   char* messageContent = (char*) malloc(strlen(CPtr + strlen("Content:")) + 1);