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
伙计们,我想找出这个 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