assertion failed 我试图写一个exe文件来运行java文件。代码从用户获取一个字符串(文件名)并将其附加到路径然后作为命令运行它。 但我得到调试断言在运行时失败。 我认为问题来自strcat()。 有没有其他方法将字符串追加到另一个? 你能帮忙吗? 感谢。
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "test.h"
DWORD
main
(
DWORD ac,
PBYTE *av
)
{
PBYTE name = NULL;
PBYTE path = "java -jar D:/java/";
PBYTE command = NULL;
size_t nSize = sizeof( name );
size_t pSize = sizeof( path );
DWORD size = nSize + pSize + 1;
DWORD rc = 0;
//DWORD size = sizeof(name) + sizeof(path) +1;
if ( !SetConsoleCtrlHandler ( (PHANDLER_ROUTINE)ControlHandler, TRUE ) ) return 1;
__try
{
__try
{
if ( ac == 2 )
{
name = av[1];
command = malloc ( size );
if ( command == NULL )
{
printf("\n");
fprintf ( stderr, "Error: malloc failed - %lu bytes\n", size );
}
// memcpy ( command, path, pSize );
// memcpy ( command, name, nSize );
command = strcat ( path, name );
printf("command:%s\n", command );
// system("java -jar D:/java/Simple_Interest.jar");
system(command);
}
else if ( ac > 2)
{
printf ( "Too Many Arguments!!" );
}
else
{
printf ( "More Argument Needed" );
}
}
__except
(
GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH
)
{
rc = 1;
exception (__FILE__,__LINE__);
}
}
__finally
{
if ( command != NULL ) free ( command );
}
return rc;
}