NDK探究之旅《三》—C语言的输入输出函数

13 篇文章 0 订阅
11 篇文章 0 订阅
NDK探究之旅:

NDK探究之旅《一》——对jni和NDK的认识

NDK探究之旅《二》——C语言的基本认识

有关于java的输入输出函数:

image

C语言的输出函数:

我们先来看一下printf函数
  • printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。

  • printf()函数的调用格式为: printf(“<格式化字符串>”, <参量表>)。

  • 格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

  • 4,作用:在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向终端(显示器、控制台等)输出字符。

*备注:*

c语言的双精度小数点只能保存到后6位

如:


 #include<stdio.h>
#include<string.h> 
intmain() 
{
  char c,s[20], *p;
  inta=1234, *i; 
  floatf=3.141592653589;
  doublex=0.12345678987654321; 
  p="How do you do"; 
  strcpy(s,"Hello, Comrade");
  *i=12;   
  c='\x41';
  printf("a=%d\n", a);    /*结果输出十进制整数a=1234*/ 
  printf("a=%6d\n", a);   /*结果输出6位十进制数a= 1234*/ 
  printf("a=%06d\n", a);  /*结果输出6位十进制数a=001234*/ 
   printf("a=%2d\n", a);   /*a超过2位, 按实际值输出a=1234*/ 
  printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/ 
  printf("*i=%-4d\n",*i); /*输出左对齐4位十进制整数*i=12*/  
  printf("i=%p\n", i);    /*输出地址i=06E4*/ 
  printf("f=%f\n", f);    /*输出浮点数f=3.141593*/ 
  printf("f=6.4f\n", f);  /*输出6位其中小数点后4位的浮点数f=3.1416*/   
  printf("x=%lf\n", x);   /*输出长浮点数x=0.123457*/ 
  printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点数x=0.1234567898765432*/   
  printf("c=%c\n", c);    /*输出字符c=A*/
  printf("c=%x\n", c);    /*输出字符的ASCII码值c=41*/ 
  printf("s[]=%s\n", s);  /*输出数组字符串s[]=Hello, Comrade*/ 
  printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello, Co*/ 
  printf("s=%p\n", s);    /*输出数组字符串首字符地址s=FFBE*/   
  printf("*p=%s\n", p);   /* 输出指针字符串p=How do you do*/ 
  printf("p=%p\n", p);    /*输出指针的值p=0194*/ 
  getch(); 
   retunr0; 
}

C语言的输入函数:

函数名: scanf

功 能: 执行格式化输入

scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。其调用格式为:scanf(“<格式化字符串>”, <地址表>);格式化字符串包括以下三类不同的字符;

  • 1 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。

  • 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。

  • 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数完全不同, 要特别注意。各个变量的地址之间同“,”分开。

例1
int i,j;
scanf(“%d, %d”, &i, &j);

上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最后读入另一个整型数。如果“,”这一特定字符没有找到, scanf()函数就终止。若参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。

对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就是地址, 因此使用scanf()函数时, 不需要在它们前面加上”&”操作符。

main()
{
  char *p, str[20];
  scanf(“%s”, p);
  scanf(“%s”, str);
  printf(“%s\n”, p);
  printf(“%s\n”, str);
}

可以在格式化字符串中的“%”各格式化规定符之间加入一个整数, 表示任何读操作中的最大位数。

如例2中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句变为scanf(“s”, p);程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读入函数即scanf(“%s”, str)就会从第11个字符开始读入。

实际使用scanf()函数时存在一个问题, 下面举例进行说明:当使用多个scanf()函数连续给多个字符变量输入时

例如:

main()
{
  char c1, c2;
  scanf(“%c”, &c1);
  scanf(“%c”, &c2);
  printf(“c1 is %c, c2 is %c”, c2, c2);
}

运行该程序, 输入一个字符A后回车 (要完成输入必须回车), 在执行scanf(“%c”, &c1)时, 给变量c1赋值”A”

但回车符仍然留在缓冲区内, 执行输入语句scanf(”%c”, &c2)时, 变量c2输出的是一空行,
如果输入AB后回车, 那么输出结果为: c1 is A, c2 is B。要解决以上问题,

可以在输入函数前加入清除函数fflush()。修改以上程序变成:


#include<stdio.h>

main()
{
  char c1, c2;
  scanf(“%c”, &c1);
  fflush(stdin);
  scanf(“%c”, &c2);
  printf(“c1 is %c, c2 is %c”, c1, c2);
}

c语言的输入输出函数相对而言是非常简单的.

利用C打印水仙花:

利用C打印出0-1000之间所有的”水仙花数”

所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

代码如下:

Markdown

打印结果:

Markdown

博客地址:

http://blog.csdn.net/androidstarjack/article/details/71218919

### 相信自己,没有做不到的,只有想不到的
如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部

Markdown

(欢迎关注学习和交流)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用NDK和OpenGL ES 3.0来绘制一个角形可以分为以下几个步骤: 1. 首先,创建一个安卓项目,并配置NDK环境。 2. 在项目的jni目录下,创建一个C/C++源文件triangle.c。 3. 在triangle.c文件中,引入相关的头文件,包括<jni.h>和<GLES3/gl3.h>。 4. 在triangle.c文件中,实现一个JNI函数,用于绘制角形。函数的参数为Surface对象。 5. 在JNI函数中,通过EGL和GLES初始化OpenGL环境,并创建一个EGLSurface用于后续的绘制操作。 6. 在JNI函数中,创建一个顶点数组和顶点缓冲,并将顶点数据存入顶点缓冲。 7. 在JNI函数中,编写着色器代码,包括顶点着色器和片段着色器,并编译和链接它们。 8. 在JNI函数中,通过glClearColor()函数设置清空屏幕时的颜色。 9. 在JNI函数中,通过glClear()函数清空屏幕,并启用深度测试。 10. 在JNI函数中,通过glViewport()函数设置视口大小。 11. 在JNI函数中,通过glUseProgram()函数使用着色器程序。 12. 在JNI函数中,通过glVertexAttribPointer()函数设置顶点数据的属性,并启用顶点属性。 13. 在JNI函数中,通过glDrawArrays()函数绘制角形。 14. 在JNI函数中,通过eglSwapBuffers()函数交换绘制的缓冲区。 15. 在JNI函数中,清理OpenGL环境,并释放资源。 16. 在Java层的MainActivity中,通过JNI调用C/C++函数进行绘制。 以上是绘制一个角形的大致步骤。具体的细节和代码实现可以参考相关的OpenGL ES 3.0和NDK的文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

androidstarjack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值