C语言输入和输出

从这一课开始,终于可以愉快地编码了.

首先介绍两个库函数, printf() 和 scanf();

其实很不愿意先讲解printf()的,容易养成不调试的坏毛病.

但是为了给初学者 增加学习的兴趣,还是讲了吧


<一>输出:

在C语言中,有三个函数可以用来在显示器上输出数据:

  • puts():只能输出字符串。
  • putchar():只能输出单个字符。
  • printf():可以输出各种类型的数据。

printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar(),大家一定要掌握。


还记得这个吧:

printf("Hello World !\n");

下边是函数原型和用法:

原型:extern void printf(const char *format,...);
  
  用法:#include <stdio.h>
  
  功能:格式化字符串输出
  
  说明:format指定输出格式,后面跟要输出的变量
        目前printf支持以下格式:
         
 
 
Code格式
%c字符
%d带符号整数
%i带符号整数
%e科学计数法, 使用小写"e"
%E科学计数法, 使用大写"E"
%f浮点数
%g使用%e或%f中较短的一个
%G使用%E或%f中较短的一个
%o八进制
%s一串字符
%u无符号整数
%x无符号十六进制数, 用小写字母
%X无符号十六进制数, 用大写字母
%p一个指针
%n参数应该是一个指向一个整数的指针指向的是字符数放置的位置
%%一个'%'符号
一个格式说明可以带有几个修饰符,用来指定显示宽度,小数尾书及左对齐等: - 左对齐 + 在一个带符号数前加"+"或"-"号 0 域宽用前导零来填充,而不是用空白符 域宽是一个整数,设置了打印一个格式化字符串的最小域。精度使用小数点后加数字表示的, 给出每个转换说明符所要输出的字符个数。 注意:带修饰符的显示可能不正常
 

一个位于一个%和格式化命令间的整数担当着一个最小字段宽度说明符,并且加上足够多的空格或0使输出足够长. 如果你想填充0,在最小字段宽度说明符前放置0. 你可以使用一个精度修饰符,它可以根据使用的格式代码而有不同的含义.

  • 用%e, %E和 %f,精度修饰符让你指定想要的小数位数. 例如,

        %12.6f
    

    将会至少显示12位数字,并带有6位小数的浮点数.

  • 用%g和 %G, 精度修饰符决定显示的有效数的位数最大值.
  • 用%s,精度修饰符简单的表示一个最大的最大长度, 以补充句点前的最小字段长度.
所有的printf()的输出都是右对齐的,除非你在%符号后放置了负号. 例如,

    %-12.4f

将会显示12位字符,4位小数位的浮点数并且左对齐. 你可以修改带字母lh%d, %i, %o, %u和 %x 等类型说明符指定长型和短型数据类型 (例如 %hd 表示一个短整数). %e, %f和 %g 类型说明符,可以在它们前面放置l指出跟随的是一个double. %g, %f和 %e 类型说明符可以置于字符'#'前保证出现小数点, 即使没有小数位. 带%x类型说明符的'#'字符的使用, 表示显示十六进制数时应该带'0x'前缀. 带%o类型说明符的'#'字符的使用, 表示显示八进制数时应该带一个'0'前缀. 


 
extern void printf(const char *format,...);
这个函数比较特别,是一个不定参数函数,也就是说参数个数可以使1个,也可以是多个.
通常我们遇到湖综合自己编写的函数参数都是定长的.

printf()的返回值是打印的字符数,如果发生错误则返回一个负值.


printf 是 print format 的缩写,意思是“格式化打印”。这里所谓的“打印”就是在屏幕上显示内容,与“输出”的含义相同,所以我们一般称 printf 是用来格式化输出的。


格式控制符

它指明了以何种形式输出数据。格式控制符均以%开头,后跟其他字符。

%d 表示以十进制形式输出一个整数。除了 %d,printf 支持更多的格式控制,例如:

  • %c:输出一个字符。c 是 character 的简写。
  • %s:输出一个字符串。s 是 string 的简写。
  • %f:输出一个小数。f 是 float 的简写。

举例:

<1>输出单个字符

char c='A';
printf("%c",c);

<2>输出一个字符串

char *str1="Hello World !";
char str2[]="Hello C !";
printf("%s\n%s\n",str1,str2);


<3>输出 一个数字:

int age=10;
double weight=36.2;
printf("age=%d\n weight=%d",age,weight);


<二>输入:

程序是人机交互的媒介,有输出必然也有输入。在C语言中,有多个函数可以从键盘获得用户输入:

  • scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
  • getchar()getche()getch():这三个函数都用于输入单个字符。
  • gets():获取一行数据,并作为字符串处理。
scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。


语法:

  #include <stdio.h>
  int scanf( const char *format, ... );

scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. 它和printf()有点类似.format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始,如下:

控制字符说明
%c一个单一的字符
%d一个十进制整数
%i一个整数
%e, %f, %g一个浮点数
%o一个八进制数
%s一个字符串
%x一个十六进制数
%p一个指针
%n一个等于读取字符数量的整数
%u一个无符号整数
%[]一个字符集
%%一个精度符号

scanf()读取匹配format(格式)字符串的输入. 

当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃.

 如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中. 

如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中. 

scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF. 

举例:

<1>输入单个字符

char c='A';
scanf("%c",&c);

<2>输出一个字符串

char str[20];

scanf("%s",str);


<3>输出 一个数字:

int age=10;
double weight=36.2;
scanf("%d%d",&age,&weight);

学习了以上,就可以做一个简单的计算器了.


====================================================

转义字符:

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值