strcat + strlen 有奇怪的行为

strcat + strlen has strange behavior

伙计们,我想找出这个 strcat(或 strlen)有这个问题的原因:

当我写的时候:

int main(int argc, char* argv[])
{
    if(argv[1] != '[=10=]')
    {
        const char* navegador = "C:\Program Files\Mozilla Firefox\firefox.exe ";
        const char* puerto  = "localhost:80/";
        char* archivo   = argv[1];

            char comando[2] = "\"";
            strcat(comando,navegador);
            int size = strlen(comando);         // ISSUE UNCOMMENTED!

        printf("command is: %s\n",comando);
    }
    else
    {
        printf("is null!\n");
    }
    return 0;
}

它的输出是:

D:\camil\Documents\mis_documentos\configs\sublime_text>program.exe someOption
command is: "C:\.

当我评论问题陈述时,它的输出是:

D:\camil\Documents\mis_documentos\configs\sublime_text>program.exe someOption
command is: "C:\Program Files\Mozilla Firefox\firefox.exe"

为什么 strlen 会改变输出,似乎 strlen 会影响 strcat 的行为。

如果所有命令行参数部分都很好,您应该增加 comando[] 的大小,因为它不足以包含连接部分。

它的大小应至少等于 strlen(comando) + strlen(navegador) + 1

当我将 comando 的大小增加到(比如)200 时,输出为:command is: "C:\Program Files\Mozilla Firefox\firefox.exe