我对这个完全不知所措。我不明白为什么这不管用。带空终止符的简单字符数组-除了当我输出它时,它不会终止!

int file_create(const char *path) {
    //trying to trap situations where the path starts with /.goutputstream
    char path_left_15[16];
    strncpy(path_left_15, path, 15);
    printf("%d\n", strlen("/.goutputstream")+1);
    path_left_15[strlen("/.goutputstream")+1] = '\0';
    printf("%d\n", strlen(path_left_15));
    printf("path_left_15: %s\n", path_left_15);
    //continue on...
}

这是我的输出:
> 16

> 16

>/.goutputstream\B7<random memory stuff>

我搞不懂为什么这没有正确结束。我试过延长数组的长度,但每次都得到相同的结果。我疯了!
有人看到了吗?谢谢。

最佳答案

你已经脱离了阵营。而不是path_left_15[strlen("/.goutputstream")+1] = '\0';尝试path_left_15[15] = '\0';
您将截断字符串,但打印时会很安全。

07-25 20:20