【发布时间】:2017-07-14 07:08:21
【问题描述】:
不清楚这里是否需要+ 1:
int len = strlen(TARGET);
info = malloc( len + 1 );
因为它上面的几行已经被附加到它上面:
TARGET[END - START] = '\0';
如果需要,那么也许还需要.. 附加 \0。
int len = strlen(TARGET);
info = malloc( len + 1 );
strcpy(info, TARGET);
info[len] = '\0';
Q:如何判断一个字符串是否已经有
null termination
也许如果它已经有了它.. 附加另一个就不合逻辑了。
功能齐全:
char * FUNCTION ( char * v ){
char *TARGET = NULL;
const char *PATTERN1 = "co=";
const char *PATTERN2 = "&";
char *START = strstr(v, PATTERN1);
if (START) {
START = START + strlen(PATTERN1);
char *END = strstr(START, PATTERN2);
if (!END){
END = START + strlen(START);
}
TARGET = malloc(END - START + 1);
memcpy(TARGET, START, END - START);
TARGET[END - START] = '\0';
}
if (!START || TARGET == NULL || TARGET[0] == '\0') {
return 0;
}
int len = strlen(TARGET);
info = malloc( len + 1 );
strcpy(info, TARGET);
info[len] = '\0';
return info;
}
【问题讨论】:
-
"如何判断一个字符串是否已经有空终止符" 如果字符串不是空终止符,你就不能使用
strlen。 -
@FelixPalmen 嘿,我不确定其他问题,但这看起来是一个合理的问题(不过我不判断质量)。
-
恐怕这里可能存在错误的身份危机。
-
我的帖子被这些无效的 cmets 控制了。
-
花时间发布答案的人们正在遭受损害。对OP没有造成损害。海报的目的是解决问题。