Android 下 JNI 开发Day1

输入输出函数-32

1_输出函数

printf("你要输出的内容");

%d  -  int

%ld - long int

%c  - char

%f -  float

%u – 无符号数

%hd – 短整型

%lf – double

%x – 十六进制输出 int 或者long int 或者short int

%o -  八进制输出

%s – 字符串 

1、写代码如下

main()

{

     int i = 1234;

     long l = 12345678;

     char c = 'a';

     float f = 3.1415;

     double d = 3.1415926535;

     printf("i=%d\n",i);

     printf("l=%ld\n",l);

     printf("c=%c\n",c);

     printf("f=%f\n",f);

     printf("d=%lf\n",d);          

     system("pause");      

}   

运行演示结果如下:

f被补成6位了,d被截断了,

导致的原因是默认输出小数点后六位

2、解决方案:

 原来代码:

 printf("f=%f\n",f);

 printf("d=%lf\n",d);

 改成如下:

 printf("f=%.4f\n",f);

 printf("d=%.10lf\n",d);

对应的类型使用对应的占位符输出,不然会损失精度

例如:

 int i = 12345678;

 printf("i=%hd\n",i);

2_输入函数

Java中的输入函数:System.in();

C中的输入函数:scanf(“输入的类型占位符”,内存地址);

例如:

int len;

scanf(“%d”, &len);

A:整数的输入函数-创建新的文件“输入函数.c

#include<stdio.h>

#include<stdlib.h>

/*

输入函数

int len;

scanf(“%d”, &len);

*/

main()

{

      printf("请输入一个数字:");

      int i;//定义一个i,用来接收用户的数据

      scanf("%d",&i); //&i 取i变量在内存中的地址

      printf("i=%d\n",i);

      system("pause");

}    

B:输入字符序列

java 中用string表示一个字符串

c语言中没有字符串

c语言中表示字符串是使用字符序列:char数组

 写法

 char cArray [] = {'a','b'};   正确

 char [] cArray = {'a','b'};   错误

  C语言中不能在for循环中定义变量

  int j;

  for( j=0;j<5;j++){                   

  }   

完整代码:

  char cArray [5] ;

  scanf("%s",cArray);

   int j;

   for( j=0;j<5;j++){       

      printf("cArray[%d]==%c\n",j,cArray[j]);            

  }     

C:输入字符序列另外一中方式 

 char cArray[] = {'h','e','l','l','o','\0'};//\0代表数组结束

 printf("cArray=%s\n",cArray);  

 上面代码输出的是hello

 有时候后面会多什么东西,导致的原因是:数组是一块连续的内存空间,它不知道时候结束。

 char cArray[] = {'h','e','l','l','o','\0','a','b'};//\0代表数组结束

 printf("cArray=%s\n",cArray);  

上面代码输出的是hello

char cArray[] = {'h','e','l','l','o','a','b'};//\0代表数组结束

 printf("cArray=%s\n",cArray);  

上面代码输出的是helloab

//指针

    char* cPoint= "Hello world";

    printf("c=%s\n",cPoint);