我一直在尝试将我的FRC java代码上传到github的工作量尽可能无痛。在这,我做了这个程序:
int _tmain(int argc, _TCHAR* argv[])
{
printf("Adding files to commit.\n");
system("git add *");
_TCHAR* commit = argv[1];
printf("Committing changes\n");
char* buffer = new char[300];
sprintf(buffer, "git commit -m '%s' *", commit);
system(buffer);
printf("Status:\n");
system("git status");
printf("Uploading...\n");
system("git push origin master");
printf("Done!");
return 0;
}
问题是当我传递参数"测试"时,提交被命名为"''""'''''''''我该如何解决这个问题?
答案 0 :(得分:0)
我怀疑您将程序构建为Unicode程序,因此所有TCHAR
类型的变量都是Unicode。当您将commit
传递给sprintf()
时,对参数没有进行类型检查,因为它是vararg参数的一部分。在Unicode字符串中,"Test"
将有一个值为'T'
的字节后跟一个值为0
的字节 - 就sprintf()
而言结束字符串。
我建议转储TCHAR
类型,并为这个简单的程序使用char
类型。如果您不想这样做,那么请全力以赴并使用基于TCHAR
的函数,包括_tprintf()
,而不是将TCHAR
函数与普通的旧char
函数混合。< / p>