我一直不确定这样做的正确方法。 我正在尝试编写以下函数
int obtain_substr(int seqn, char *fullstring, int position, char **ret_string);
我希望它从fullstring
的第position
个char
中获取已定义STRSIZE
的子字符串,在输出字符串(这将是*ret_string
)之前seqn
。
因此,例如,如果我有以下值:
#define STRSIZE 7
seqn = 2;
fullstring = "Lorem ipsum dolor sit amet."
position = 3;
我希望obtain_substr
返回以下值:
*ret_string = "2em ipsu";
到目前为止,我一直在做的是以下函数,但老实说,我不确定它的实现:
int obtain_substr(int seqn, char *fullstring, int position, char **ret_string) {
char *buf = malloc(sizeof(char) * STRSIZE);
memset((void *) buf, 0, sizeof(char) * STRSIZE);
if (buf == NULL) {
perror("malloc");
return -1;
}
buf = strncpy(buf, fullstring + position, STRSIZE); // Obtain substring
sprintf(*ret_string, "%d%s", seqn, buf); // Merge sequence number and substring
return 0;
}
我是否忘记管理一些结束字符串