2021-09-09 C语言 输入输出专题

本文详细介绍了C语言中的字符输出函数putchar()、格式输出函数printf(),以及字符输入函数getchar()和scanf()的使用,包括各种格式说明符和示例。通过实例演示了如何处理数据输入输出,解决字符串输入的垃圾问题,并探讨了gets()和puts()函数的应用。
摘要由CSDN通过智能技术生成

**

Day3输入输出专题

**
C语言没有I/O语句,I/O操作由函数实现
#include <stdio.h>
1.字符输出函数putchar( )
格式:putchar©
参数:C为字符常量、变量或表达式
功能:把字符c输出到显示器上
反值:正常,为显示的代码值
例:

int c ;char a ;c = 65 ;a = ‘b’ ;
putchar(c);putchar(‘\n’);putchar(a);

显示结果为:
A
B
2.格式输出函数printf
格式:printf(“格式控制串”,输出表);
功能:按指定格式向显示器输出数据
输出表:要输出的数据
格式字符串:包含两种信息
1)格式说明:%[修饰符]格式字符,用于指定输出格式。
2)普通字符:原样输出。
2.1. 格式字符
在这里插入图片描述
例:

int a = 567 ; printf(%d”,a) ; //567
int a = 255 ; printf(%x”,a) ; //ff
int a = 65 ; printf(%o”,a) ; //101
int a = 567 ; printf(%u”,a) ; //567
char a = 65 ; printf(%c”,a) ; //A
printf(%s”,”ABC”) ; //ABC
float a = 567.789 ; printf(%e”,a) ; //5.677890e+02
float a = 567.789 ; printf(%f”,a) ; //567.789000
float a = 567.789 ; printf(%g”,a) ; //567.789
printf(%%) ; //%

2.2附加格式说明符在这里插入图片描述
例:m.n

int a = 1234 ; float f = 123.456 ; char ch = ‘a’ ;
printf(%8d,%2d\n”,a,a) ;
printf(%f,%8f,%8.1f,%.2f\n”,f,f,f,f) ;
printf(%3c\n”,ch) ; 

运行结果:

    1234,1234
123.456, 123.456,   123.4,123.45
  a

例:

static char a[] = “Hello,world!printf(%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a) ;

运行结果:

Hello,world!
   Hello,world!
     Hello
Hello
Hel

例:0,+

int a = 1234 ; float f = 123.456 ; 
printf(%08d\n”,a) ; 
printf(%010.2f\n”,f) ; 
printf(%0+8d\n”,a) ; 
printf(%0+10.2f\n”,f) ;

运行结果:

00001234
0000123.45
+0001234
+000123.45

3.字符输入函数getchar( )
格式:getchar( )
功能:从键盘读入一个字符
反值:正常,返回读取的代码值,出错或结束键盘输入返回-1(ctrl d)
例:

int c ; 
printf(“Enter a character : A\n”) ; 
c = getchar( ) ;
printf(%c--%d-->%#x\n”,c,c,c) ; 

运行结果:

Enter a character : A
A--65-->0x41

4.格式输入函数
格式:scanf(“格式控制串”,地址表);
功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键借宿。
反值:正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符”&”
4.1. 格式字符
在这里插入图片描述
4.2. 格式说明符
在这里插入图片描述
例:

scanf(%4d%2d%2d”,&yy,&mm,&dd) ;
若输入为:19991015
则yy为1999,mm为10,dd为15

例:

scanf(%2d*3d%2d”,&a,&b) ;
若输入为1234567
则a为12,b为67

4.3. 说明
1)用“%c”格式符时,空格和转义字符作为有效字符输入。
例:

scanf(%c%c%c”,&c1,&c2,&c3) ;
若输入为a b c
则c1为a,c2为空格,c3为b

2)输入字符串时,不需要用取地址运算符“&”。

4.4. 总结
输入数据时,遇到以下几种情况认为该数据结束

  1. 遇空格、TAB、回车
  2. 遇非法输入
  3. 遇宽度结束

例:

scanf(%d%c%f”,&a,&b,&c) ;
若输入为1234a123o.26
则a为1234,b为‘a’,c为123

5.输入函数留下“垃圾”
输入整数之后遗留的回车或空格成为垃圾符号,影响了下一字符的输入。
例:

int x ; char ch ;
scanf(%d”,&x) ; 
scanf(%c”,&ch) ;
printf(“x = %d,ch = %d\n”,x,ch) ;
若输入为5回车4
则结果为5,10

方法一:用getchar()清除

int x ; char ch ;
scanf(%d”,&x) ;
getchar( ) ; 
ch = getchar( ) ;
printf(“x = %d,ch = %d\n”,x,ch) ;

方法二:用格式字符串中空格或“%*c”来“吃掉”

int x ; char ch ;
scanf(%d”,&x) ;
scanf(%c”,&ch) ;scanf(%*c%c”,&ch) ;

6.字符串输入函数gets
格式:char * gets(char * s)
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动添加‘\0’
说明一:输入串长度应小于字符数组位数
说明二:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志,而scanf函数会将空格看作结束标志。
例:

char string[15] ;
printf(“Input a string :) ;
gets(string) ;
printf(%s\n”,string) ;

7.字符串输出函数puts
格式:int puts (const char *s) ;
功能:向显示器输出字符串(输出完换行)
说明:字符数组必须以‘\0’结束
例:

char string[80] = “How are you” ; 
puts(string) ;

8.数据输入输出综合示例
从键盘输入a、b、c的值求一元二次方程ax^2+b=0的根。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值