gpt4 book ai didi

c - C 中的动态大小字符串

转载 作者:行者123 更新时间:2023-11-30 15:52:14 25 4
gpt4 key购买 nike

我有以下代码并编辑我将在我正在创建的程序中处理的“路径”的字符串。

我的问题是我的代码可以工作,但我不知道为什么,或者更清楚地说,我不明白为什么 strcat 允许将 src 附加到 目标。由于一切都使用动态字符串,我不应该重新分配目标。但是当我尝试这样做时,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;
}

最佳答案

托管环境为您提供了 argv[] 数组,但您没有分配此内存,因此您不应尝试重新分配它。您根本不应该真正修改 argv[] 。如果你想进行修改,请先复制字符串(使用 malloc 等),然后至少你可以确定是否有足够的空间或是否需要使用 在连接之前重新分配

关于c - C 中的动态大小字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com