繁体   English   中英

带Strcat的C指针

[英]C Pointers with Strcat

我正在尝试strchar char *。 但是,我注意到了一个问题。

struct d{
    struct d* up   //parent
    char *path     //path to d
    char *name     //path + breadth = name
}

for(j=0; j<b;j++){
    struct d* breadth_p;
    breadth_p=malloc(sizeof(struct d));
    char buffer[256];
    snprintf(buffer, sizeof(buffer), "/%d", j)   //prepares buffer to have "/j"
    breadth_p->up=cur_parent;
    breath_path->path=cur_parent->up->name;
    breadth_name=strcat(breadth->path, buffer);
    printf("name: %s\n", breadth_p->name);
    free(breadth_p);
}

所以说我将cur_parent的名称和路径作为root传递,将b作为3传递。

root/0
root/0/1
root/0/1/2

我以为我没有正确释放宽广度p,因此它是串联先前的名称。

我期望的结果是

root/0
root/1
root/2

谁能帮我弄清楚为什么会这样吗?

strcat()就地修改 其第一个参数 (将第二个参数附加到其后),然后简单地返回修改后的输入缓冲区。 在此处阅读有关此行为的更多信息。

为了获得您期望的结果,请使用strcpy()及其兄弟strncpy() Google的用法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM