拖放运行java Class 的C程序

写这个东西的原因就是windows的命令提示符太让人心烦,所以写了这个!本来打算用批处理命令写的,不过我好久没折腾出来!最后将就着使用C写了!

不过编译Java的批处理还是蛮好写的

javac %1
直接拖放运行java class
直接拖放运行java class
打开后拖放运行java class
打开后拖放运行java class
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char * basename(const char *path){
    int i,j=0,k,size;
    char *fname;
    size=strlen(path);
    if(size==0)return NULL;
    for(i=0;i<size;i++)
        if(*(path+i)=='/' || *(path+i)=='\\')j=i;

    if(j==0)j=-1;        //当路径不存在/时
    fname=(char *)calloc(size-j,sizeof(char));
    for(i=0,k=j;i<size-j;i++,k++)
        *(fname+i)=*(path+k+1);
    *(fname+size-j-1)='\0';
    return fname;
}
char * del_postfix(char *str){
    int length=strlen(str);
    for(length--;length>=0;length--){
        if(*(str+length)=='.'){
            *(str+length)=0;
            return str;
        }
    }
    return str;
}
char * link_str(const char *str1,const char *str2){
    int len1=strlen(str1);
    int len2=strlen(str2);
    char *str;
    str=(char *)calloc(len1+len2+1,sizeof(char));
    if(str==NULL)return 0;
    strncat(str,str1,len1);
    strncat(str,str2,len2);
    return str;
}
int main(int argc,char *argv[]){
    char path[200];
    char *FileName,*cmd;
   
    if(argv[1]!=NULL)strncpy(path,argv[1],200);
    else {
        printf("请拖放文件打开,或输入文件名\n");
        gets(path);
    }
    FileName=basename(path);
    del_postfix(FileName);
    cmd=link_str("java ",FileName);
    printf("--------------------------------------\n");
    system(cmd);
    printf("------------------------------------\n");
    system("pause");
    return 0;
}

3条评论在“拖放运行java Class 的C程序”

写下你最简单的想法