JNI - PASS ARGUMENT. string
来源:互联网 发布:java陈芸 编辑:程序博客网 时间:2024/06/06 01:10
.c file:
#include <stdio.h>#include <jni.h>#include <stdlib.h>#include <string.h>#include "Prompt.h"JNIEXPORT jstring JNICALL Java_Prompt_getLine (JNIEnv *env, jobject this, jstring prompt){char buf[128];const jbyte *str;str = (*env)->GetStringUTFChars(env, prompt, NULL);//There are two methods to get the length of a String.//1. strlen(jbyte cstring)//2. (*env)->GetStringUTFLength(env, prompt)printf("The length of String is (by str.strlen) : %d\n",(int)strlen(str));printf("The length of String is (by GetStringUTFLength) : %d\n",(int)(*env)->GetStringUTFLength(env, prompt));if (str == NULL){return NULL;}printf("%s", str);(*env)->ReleaseStringUTFChars(env, prompt, str);scanf("%s" , buf);return (*env)->NewStringUTF(env,buf);}
.java file
class Prompt{//native method that prints a prompt and reads a lineprivate native String getLine(String prompt);public static void main(String args[]){Prompt p = new Prompt();String input = p.getLine("Type a line : ");System.out.println("User typed : " + input);}static {System.loadLibrary("Prompt");}}
How to pass a string to Native c:
1. use jstring as a parameter.
2. convert it to c:
const jbyte *str;str = (*env)->GetStringUTFChars(env, prompt, NULL);
Two ways to get the length of String
1. strlen(jbyte* str)
2.
(*env)->GetStringUTFLength(env, prompt)
How to construct a new String
<span style="white-space:pre"></span>(*env)->NewStringUTF(env,buf);
Other methods to get a String
GetStringCritical
jstring jstr1;jchar *s1;s1 = (*env)->GetStringCritical(env,jstr1);/* use s1.*/(*env)->ReleaseStringCritical(env,jstr1,s1);
GetStringUTFRegion
jstring promptchar outbuf[128];int len = (*env)->GetStringLength(env, prompt);(*env)->GetStringUTFRegion(env,prompt,0,len,outbuf);
0 0
- JNI - PASS ARGUMENT. string
- JNI - PASS ARGUMENT. array
- JNI - PASS ARGUMENT. ObjectARRAY
- pass variable-argument list
- NSScanner:nil string argument
- NSScanner: nil string argument
- about javascript function setInterval pass parameter at first argument
- How to pass an argument to a PowerShell script?
- pass xml string in database
- Pass
- Pass
- pass
- data argument not used by format string
- NSScanner: nil string argument错误定位
- TypeError: string argument expected, got 'bytes'
- ArgumentError: argument --positive_data_file: conflicting option string: --positive_data_file
- Warning: Call-time pass-by-reference has been deprecated - argument passed by value
- jni编译时出现:warning: format '%d' expects argument of type 'int', but argument 4 has
- 贷齐乐系统最新版SQL注入(无需登录绕过WAF可union select跨表查询) 公开时间: 2016-04-21 22:58
- CCF_Z 字形扫描
- PID-4220-素数难题
- 关于android数据库no such table错误的反思
- WinRAR 使用说明
- JNI - PASS ARGUMENT. string
- Android 文字自动滚动(跑马灯)效果的两种实现方法
- centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案
- (Vagrant Vs Docker)Should I use Vagrant or Docker for creating an isolated environment?
- Liserious战队 大水题
- 生成json接口
- 由html,body{height:100%}引发的对html和body的思考
- C#对串口数据接收的处理
- Eclipse的PHP插件PHPEclipse安装和使用