作者:qwer | 来源:互联网 | 2022-11-13 09:43
1> Some program..:
问题是这样的:
char command[] = "";
这会创建一个单个字符的数组,并且该单个字符是字符串终止符'\0'
.它等于
char command[1] = { '\0' };
当你使用sprintf
时写出越界,你将有未定义的行为.
要解决这个问题,请使用固定大小的数组,并使用它snprintf
来避免缓冲区溢出:
char command[128];
snprintf(command, sizeof command, "cmd /c spraak.vbs %s", text);