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);