int get_parameters_count(char* buffer, char* typ, int *at)
{
char *p1= strstr(buffer, strcat(typ,"="));
char *p2=strchr(p1,';');
int len;
char s[11];
*at+=p2-p1+1;
len=p2-p1-strlen(typ);
memset(s,0,len+1);
strncpy(s,p1+strlen(typ),len);
return atoi(s);
}char *get_parameter_type(char* buffer, char *typ, int *at)
{
//get location of type er
char* p1= buffer+*at;
char* p2= strchr(p1,'=');
*at+=p2-p1+1;
memset(typ, 0, p2-p1+1);
strncpy(typ, p1, p2-p1);
return typ;
}
PS:哪位大侠,帮我帮这两个C函数,转成JAVA的方法,谢谢拜托。
{
char *p1= strstr(buffer, strcat(typ,"="));
char *p2=strchr(p1,';');
int len;
char s[11];
*at+=p2-p1+1;
len=p2-p1-strlen(typ);
memset(s,0,len+1);
strncpy(s,p1+strlen(typ),len);
return atoi(s);
}char *get_parameter_type(char* buffer, char *typ, int *at)
{
//get location of type er
char* p1= buffer+*at;
char* p2= strchr(p1,'=');
*at+=p2-p1+1;
memset(typ, 0, p2-p1+1);
strncpy(typ, p1, p2-p1);
return typ;
}
PS:哪位大侠,帮我帮这两个C函数,转成JAVA的方法,谢谢拜托。
解决方案 »
- 女朋友过生日,想用java做个东西送个她
- 一道面试编程题
- SQL problems: 接收 TDS 预登录响应时发生 I/O 错误
- 加package和不加package的区别在哪儿啊?
- Thread线程有没有方法杀掉他 用操作系统的命令或程序都可以?
- 数组排序,文本框问题?
- 中文文档
- java编译器为什么只能把原文件编译成.clss 能不能编译成.exe文件!!!
- 谁有JCreator Pro V2.00 注册码
- 怎么用JAVA删除一个给定的目录,并包括次目录下的文件。
- 关于Exception in thread "main" java问题.lang.NullPointerException
- 急救.JavaSocket多线程聊天室 奇怪的问题
Java中貌似无法做到这样的操作,要么用全局变量传递,要么包装成一个类去做
首先定义一个类里面的方法跟C定义的应该一样
比如说是 public native int open(String device);
再就是在类中定义static块System.load("文件路经");
还有就是你哪个方法的参数冒似在java中不能够传递,
你还是多参考参考一下native的用法
buff = “example: heihei=32;others"
typ = "heihei";
最后返回32
并且还有个功能,就是把一个计数器alt增加strlen("heihei=32")那么对应的JAVA代码为:
int get_parameters_count(String buff, String typ, Integer at)
{
String temp = buff.subSequence(buff.indexOf(type+"="));
String temp2 = temp.subSequence(0,temp.indexOf(";"));
at.setValue(at + temp2.length());
return Integer.valueOf(temp2.subSequence(temp2.indexOf("=")+1));
}记得传进去的alt要为Integer,而不是primitive的int,不然的话就传的是拷贝,而不是引用,无法更新对象。
第二个函数很诡异,是先取p1之后at个字节的字串,然后返回一个字符串,内容是这个字串从头到第一个等号之间的距离,同时让at这个计数器增加距离
String get_parameter_type(String buff, String typ, Integer at)
{
String temp = buff.subSequence(at);
String temp2 = temp.subSequence(0,temp.indexOf("="));
alt.setValue(alt + temp2.length());
return temp2 ;
}
注意:至于传Integer是不是引用,平时没试验过,建议你试验,否则只有包装一个类包含一个int和一个String来做返回值。
另外,我身边没有IDE和编译环境,是顺手写的,但是意思应该没错
String temp = buff.subSequence(at);
at.setValue(at + temp2.length());
不允许这样写
改成
at.valueOf(at + temp2.length());用个eclipse或查查文档
例如: pname=get_namestring(buffer, &at, &nlen);
int get_data_count(char * buffer, int *at)
{
char *p1= buffer+*at;
char *p2=strchr(p1,';');
int len=p2-p1;
char s[11];
*at+=len+1;
memset(s,0,len+1);
strncpy(s,p1,len);
return atoi(s);
}谢谢 谢谢
C/C++里面的指针变量都可以对应成对象。
char*转换成string对象,int*转换成Integer对象。int get_data_count(char * buffer, int *at)
{
char *p1= buffer+*at;
char *p2=strchr(p1,';');
int len=p2-p1;
char s[11];
*at+=len+1;
memset(s,0,len+1);
strncpy(s,p1,len);
return atoi(s);
} char* buffer 转成 string buffer
int *at转成Integer at
char *p1= buffer+*at; 转成 string p1 = buffer + at.toString();char *strchr(char *s,char c);函数
如果c不在s中,返回NULL,如果在,返回c首次出现的位置,相当于at = s.indexOf(c)void *memset(void *buffer, int c, int count);函数
把buffer所指内存区域的前count个字节设置成字符c,
针对上面的语句,相当于string tmp = s.substring(0,count);
for(int i=0;i<count;i++){
tmp[i] = c;//这里可能不对,我忘记了
}
s = tmp + s.substring(count+1);char *strncpy(char *dest, char *src, int n);函数
把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
相当于s = p1.substring(0,len);PS:学C++才2天,有些可能解释不清楚。
at.setValue
java.lang.Integer中有这个方法吗?