1

代码:

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 之前的子字符串”?

4

1 回答 1

2

我假设您的意图是 malloc forHello worldMessageContent在消息中:

   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);     
于 2013-10-05T20:54:33.150 回答