伙计们,我想找到这个 strcat (或 strlen)出现此问题的原因:
当我写的时候:
int main(int argc, char* argv[])
{
if(argv[1] != '\0')
{
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 时,输出为:命令为:“C:\Program Files\Mozilla Firefox\firefox.exe
关于c - strcat + strlen 有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52243402/