【发布时间】:2013-01-13 15:58:57
【问题描述】:
我有以下代码并编辑我将在我正在创建的程序中处理的“路径”的字符串。
我的问题是我的代码有效,但我不知道为什么或更清楚我不明白为什么strcat 允许将src 附加到dest。由于一切都使用动态字符串,我不应该realloc dest。但是当我尝试这样做时,realloc 失败了
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
char *src = argv[1];
char *dest = argv[2];
char *d_basedir;
int s_length = strlen(src);
printf("dest starts as %s: length %zu\n", dest, strlen(dest));
printf("src starts as %s: length %zd\n", src, strlen(src));
if(!(src[s_length - 1] == '/')) {
if((d_basedir = strrchr(src, '/')+1) != NULL) {
printf("basedir is %s\n", d_basedir);
strcat(dest, d_basedir);
printf("dest changed to %s: length %zd\n", dest, strlen(dest));
}
}
printf("dest ends as %s: length %zd\n", dest, strlen(dest));
return 0;
}
【问题讨论】:
-
您不能通过
realloc()获得不是从malloc()(或其表亲)那里获得的东西。
标签: c string dynamic realloc strcat