程序如下,
char* Decrept(char* source, char* dest, int destlen)
{
  int len,i;
  len=strlen(source);
  if(destlen<len) return NULL;
  
  *dest=*source-128;
  for(i=1;i<len;i++)
  {
     *(dest+i)=*(source+i)-128+*(dest+i-1);
  }
  *(dest+len)=0;
  return (char*)dest;
}谢谢!

解决方案 »

  1.   

    呵呵,所以说要熟悉c的高手啊,程序比较简单,但对c和java都熟的人不多,才求救啊。
      

  2.   

    用jni
    *
     *Testjava.java文件
    */
    public class Testjava
    {
      static
      {
        System.loadLibrary("testdll");
       }
       public native static int CheckPass(String FUserID,String FPassWord);   
       public static void main(String[] args)
       {
        Testjava t = new Testjava();
        System.out.println(t.CheckPass("admin","12345678"));
        }
      }
      

  3.   

    然后用
    javac Testjava.java 生成class文件
    javah -jni Testjava 生成符合java的c的头文件Testjava.h然后就是调用你那个功能的函数了,以下是我帮人写得例子
    #include <jni.h>
    #include "Testjava.h"
    #include <stdio.h>void ok(char * a,char *b)
    {
    printf("%s",a);
    printf("%s",b);
    }
    JNIEXPORT jint JNICALL Java_Testjava_CheckPass (JNIEnv *env, jclass obj, jstring id, jstring pwd)
    {
    const char* cid = (*env)->GetStringUTFChars(env, id, 0);
    const char* cpwd =(*env)->GetStringUTFChars(env, pwd, 0);
    printf("%s",cid);
    printf("%s",cpwd);
    ok((char* )cid,(char*)cpwd);
    return 0;
    }
      

  4.   

    怎么那么多人问java调用c,c++的呢,呵呵
    看看这个我里面有回答
    http://community.csdn.net/Expert/topic/5128/5128179.xml?temp=.5352747
      

  5.   

    String decrept(String source,String dest,int destlen)
    {
    int len=dest.length();
    char destChar[]=new char[len];
    if(destlen<len) return null;
    destChar[0]=(char)(source.charAt(0)-128);
    for(int i=1;i<len;i++)
    {
    destChar[i]=(char)(source.charAt(i)-128+destChar[i-1]);
    }

    return destChar.toString();
    }不知是否符合楼主的要求
      

  6.   

    最好还是能改成java的,调用太麻烦,谢谢禅剑飞雪的好代码,收藏先,呵呵。
      

  7.   

    嗯,改成java的楼上的都写好了,那就免了阿