linux system stat()方法无法正常工作

linux system stat()方法无法正常工作,linux,string,system,stat,strcat,Linux,String,System,Stat,Strcat,当我这样写路径时,stat()正在工作 char homePath[] = "../../usr/http/"; if(stat("usr/bin",&file_info) == -1) { strcat(sendMessage, path); strcat(sendMessage, "\n\nHTTP/1.1 400 Not Found\n"); return 0; } 但是下面的代码不起作用。stat()总是返回-1。 我认为strcat是个问题。但是,当

当我这样写路径时,stat()正在工作

char homePath[] = "../../usr/http/";

if(stat("usr/bin",&file_info) == -1)
{
    strcat(sendMessage, path);
    strcat(sendMessage, "\n\nHTTP/1.1 400 Not Found\n");
    return 0;
}
但是下面的代码不起作用。stat()总是返回-1。 我认为strcat是个问题。但是,当我检查合并的路径字符串时,它似乎还可以。请让我知道如何修理它

    strcat(path, homePath);
    strcat(path, target);


    if(stat(path,&file_info) == -1)
    {
        strcat(sendMessage, path);
        strcat(sendMessage, "\n\nHTTP/1.1 400 Not Found\n");
        return 0;
    }

如何设置homePath和target


格式化看起来很好:

路径的第一个字符可能无法打印。使用strcpy。使用strncpystrncat更安全

strncpy(path, homePath, sizeof(path));
strncat(path, target, sizeof(path) - strnlen(path, sizeof(path)));

阅读Linux手册页,了解为什么首选strn版本。

这是非常正常的形式。homepath=“../usr/http/”target=“test”以及在调用stat之前何时打印路径?看起来还好吗?当然,我试过了。看起来还可以。我想知道它是否包含不可见的数据。好吧,你可能想一次打印一个字符,以确保没有任何有趣的事情发生。但是,在执行此操作之前,请检查ernno以验证错误,#包括并调用:printf(“统计错误为:%s\n”,strerror(errno));因为stat应该将errno设置为特定的错误值。您是否初始化了路径?最后的
sendMessage
的内容是什么?当然可以。我做到了。字符路径[200]=“”;尝试使用调试器运行并确保字符串正确。另外,当stat返回错误(-1)时,使用strerror\u r()获取错误的原因。