代码:
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之前的子串”?
答案 0 :(得分:2)
我假设你的意图是消息中的Hello world
和MessageContent
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);