当我想连续

时间:2018-04-16 15:18:26

标签: c

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;
}   

0 个答案:

没有答案