C语言细节——献给入门者(一)

C语言细节——献给入门者(一)

主题  输入输出需要注意的细节

首先我们要知道大致有scanf(),printf(),getchar(),putchar(),gets(),puts()这几种输入方式。

1??.scanf()&gets()

首先看个最普通的例子:

char str[20];

scanf(“%s”,str);

当我们输入helloworld,此时str为“helloworld”

但是当我们输入hello world,此时str为“hello”

原因是scanf输入字符串时遇到空格和回车就停止读入

————

对比着看gets()

gets(str);

当我们输入helloworld,此时str为“helloworld”

但是当我们输入hello world,此时str为“hello world”

说明gets遇到空格依然把空格当成字符读入,而不是停止,但是遇到回车依然会停止读入

2??.printf()

printf()大约只需要注意输出的对应,以及一下这两种情况

1.printf(“%d ”,123,456);

这种情况下会输出123,原因是printf函数参数的压栈顺序是从右到左,也就是456先压入栈,123在456上面,而取出参数时又是从栈顶开始出,所以输出为123

2.printf(“%d”,(123,456));

这种情况下输出456,原因是小括号里面表示一条语句,而返回值是最右边的数,所以这边的参数是456,123根本没有传进printf函数。

此外再讲一些printf输出格式(此部分借鉴他人,不打字了):

(整数格式)

int a=1234;

printf("a=%d\n",a);    //a=1234

printf("a=%2d\n",a);   //a=1234    超过2位,按实际输出

printf("a=%6d\n",a);   //a=  1234  不足6位,右对齐

printf("a=%06d\n",a);  //a=001234  不足6位,前面补0

printf("a=%-6d\n",a);  //a=1234    ‘-‘左对齐

(浮点数格式)

float m=8888.8888;     //float 单精度型浮点数 有效位数是6位或7位,根据不同的浮点数会有不同

float m1=8888.8888f;    //在后面加上f或F,编译警告:truncation from‘const double‘to ‘float‘

//编译器默认浮点数为double

float m2=8888.888f;

double n=8888.8888;

double n1=8888888888.88888888;  //double 双精度型浮点数 有效位数是15位

printf("m=%f\n m1=%f\n m2=%f\n n=%lf\n n1=%f\n",m,m1,m2,n,n1); // m=8888.888672

// m1=8888.888672     m2=8888.887695

// n=8888.888800 n1=8888888888.888889

//%f的默认输出小数位数就是6位不管有没有l

/*printf的%f说明符的确既可以输出float型又可以输出 double型。 根据"默认参数提升"规则(在printf这样的函数的

可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到

双精度数。严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。*/

printf("m4=%4.2f\n",m);

//宽度总共4位,小数两位,小数点一位,整数一位,这里

//整数超过宽度规定,按实际整数位输出

printf("m5=%9.6f\n",m);   //浮点数小数部分不足6位,右对齐

printf("m6=%9.2f\n",m);   //整数部分不足6位,右对齐;小数部分超过2位,四舍五入

char c[20]="Hello,world!";

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

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

//c=Hello,wor  6.9s表示输出一个长度长度不小于6且不大于9

//的字符串。若大于9, 则第9个字符以后的内容将被删除。

3??.getchar()

getchar();是读取一个字符。包括空格,回车;

比较大的作用是当需要输入一个数字之后有需要输入一个字符串的时候;

如:

scanf(“%d”,&num);

scanf(“%s”,str);//或者gets(str);

此时输入

123 hello

或者

123

hello

字符串读入都是会出错的,原因是把回车或者空格当成你想要读的字符串读进str了,这个时候我们需要在这两行输入中间夹一个getchar();来吃掉这个回车或者空格以保证str读取正确。

getchar()的使用方法还可以一个一个读入字符;

如:while((ch=getchar())!=null)//注这里内部的小括号不能漏,不然ch的值就是getchar()!=null的比较返回的真假值了,因为!=优先级大于=,优先级请自己查。

4??.putchar()&puts()

这两个其实没什么好说的,就是一个输出单个字符,一个输出一个字符串,需要注意的是puts()会自动在输出的字符串后面加上一个换行。

以上。

学的不精,望广大网友查错提建议,谢谢~

时间: 2024-12-16 00:48:05

C语言细节——献给入门者(一)的相关文章

Swift语言Auto Layout入门教程

Swift语言Auto Layout入门教程:上篇 开始用自动布局约束的方式思考吧! 更新记录:该教程由Brad Johnson更新Swift和iOS 8内容,原文第一版作者为教程编纂组的Matthijs Hollemans. 你可曾为了让App在横竖屏模式下都能展现整洁的界面而感到苦恼?你可曾为了让布局同时支持iPhone和iPad而感到心烦?别灰心,好消息来啦! 为某种确切尺寸的屏幕设计用户界面并不麻烦,但如果屏幕画面的框架不固定,为适应新环境,App中各个UI元素的位置和大小都需要相应调整

Swift语言Auto Layout入门教程:上篇

原文:Beginning Auto Layout Tutorial in Swift: Part 1/2,译者:@TurtleFromMars 开始用自动布局约束的方式思考吧! 更新记录:该教程由Brad Johnson更新Swift和iOS 8内容,原文第一版作者为教程编纂组的Matthijs Hollemans. 你可曾为了让App在横竖屏模式下都能展现整洁的界面而感到苦恼?你可曾为了让布局同时支持iPhone和iPad而感到心烦?别灰心,好消息来啦! 为某种确切尺寸的屏幕设计用户界面并不麻

R语言快速上手入门

R语言快速上手入门 课程学习网址:http://www.xuetuwuyou.com/course/196 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本教程深入浅出地讲解如何使用R语言玩转数据.课程中涵盖R语言编程的方方面面,内容涉及R对象的类型.R的记号体系和环境系统.自定义函数.if else语句.for循环.S3类R的包系统以及调试工具等.本课程还通过示例演示如何进行向量化编程,从而对代码进行提速并尽可能地发挥R的潜能.本课程适合立志成为数据科学家的

程序猿之---C语言细节24(段错误、类型提升、sizeof 'A')

主要内容:段错误.类型提升.sizeof  'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; int *p = (int *)&(u.a[1]); // 没有引起总线错误 *p = 17; printf("%d\n",*p); #if 0 int *q = 0; // 引起段错误,在linux中运行可看到段错误,在windows下运行时直接出错 *q = 1; #endif

[转载] C语言细节,写的非常棒!

这篇文章主要讨论C语言细节问题.在找一份工作的时候,语言细节占的比例非常小,之前看某个贴着讨论,估计语言细节在面试中,占了10%的比重都不到,那为什么还要研究C语言的细节呢,我觉得有三个原因促使我总结这篇文章: 1. 总会有些面试官喜欢问这样的问题,尤其是偏底层开发的面试官. 2. 总有有那么两个2B同学.同事,搞两个很偏的知识点来考你,把你难倒以后,他就乐呵呵的满足了. 3. 对C语言有更加巩固的基础,增加信心,在代码出错时,可以非常肯定哪里没有错,而把精力花在真正的问题上. 1) switc

[Go语言]一、入门Hello,World

Go简介 为什么有了系统编程级别的C/C++以及后来的Java,也有脚本级别的Ruby/Perl/Python语言可用,Google为什么还要发布Go语言? "我们开发Go,是因为近10年左右开发程序之难让我们有点沮丧" --首席软件工程师Rob Pike Go完全支持coroutine,即协程,也称为轻量级的线程.多数语言在语法层面不直接支持协程.一些语言或许可以通过第三方库来支持协程,但是功能并不完整.比如仅仅提供协程的创建, 销毁和切换能力.如果在这样的协程中调用一个同步IO,如

如何R语言快速上手入门

R语言快速上手入门 课程学习网址:http://www.xuetuwuyou.com/course/196 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本教程深入浅出地讲解如何使用R语言玩转数据.课程中涵盖R语言编程的方方面面,内容涉及R对象的类型.R的记号体系和环境系统.自定义函数.if else语句.for循环.S3类R的包系统以及调试工具等.本课程还通过示例演示如何进行向量化编程,从而对代码进行提速并尽可能地发挥R的潜能.本课程适合立志成为数据科学家的

Mysql C语言API编程入门讲解

原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.  API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能.  Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作.  Mysql的安装  要进

C语言细节总结笔记

*/--> C语言细节总结笔记 Table of Contents 1. 三步异或法交换数字 2. 按n位置位 3. 求余求商求积 4. 辗除法求最大公约数 5. 求数组元素个数方法 6. 运算符优先级 7. scanf处理字符串 8. 指针题 9. int const *p问题 10. 数组和指针 11. 字符数组 12. 二维数组 13. 数组指针 1 三步异或法交换数字 a ^= b; b ^= a; a ^= b; 2 按n位置位 先置0 a&=~(1<<n) 再置1/0