华清远见学习笔记—Level1—Day3—输入输出专题

本文详细介绍了C语言中的字符输出函数putchar()和格式输出函数printf(),以及字符输入函数getchar()和格式输入函数scanf()的使用方法。通过实例展示了各种格式控制符的应用,如%d、%x、%o、%c等,并讨论了输入函数可能遗留的“垃圾”数据及其处理方式。此外,还提到了字符串输入输出函数gets()和puts()的功能和使用注意事项。
摘要由CSDN通过智能技术生成

本专栏为个人在华清远见嵌入式linux学习期间的笔记,希望能与各位读者共同进步!


前言

输入输出专题:

对C语言中的输入和输出进行了专题讲解,通过本次课的学习学员会对输入和输出有个全面深入的掌握。


一、字符输出函数和格式输出函数

1.数据输出

C语言无I/O语句,I/O操作由函数实现
调用前必须调用头文件。

#include <stdio.h>

2.字符输出函数

格式: putchar(c);

参数: c为字符常量、变量或表达式
功能:把字符c输出到显示器上
返值:正常,为显示的代码值;
例子

#include <stdio.h>
main()
{   
	int c;
    char a;
    c=65;  a='B';
    putchar(c); putchar('\n'); putchar(a);
}
运算结果为:
A
B

3.格式输出函数

格式:printf(“格式控制串”,输出表);

功能:按指定格式向显示器输出数据
输出表:要输出的数据
格式控制串:包含两种信息:
1.格式说明:%[修饰符]格式字符,用于指定输出格式
2.普通字符:原样输出

格式字符表
-格式字符
例子

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("%%");			        //%

附加格式说明符
附加格式说明符
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.456001,123.456001,   123.5,123.46
  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.46
+0001234
+000123.46

二、字符输入函数和格式输入函数

1.字符输入函数

格式:  getchar()

功能:从键盘读一字符
返值:正常,返回读取的代码值;出错或结束键盘输入,返回-1 (ctrl d)

例子

#include <stdio.h>
int main()
{  int c;
   printf("Enter a character:");
   c=getchar();
   printf("%c--%d->hex%x\n", c, c, c);
}
运行结果:
Enter a character:A
A--65->hex41

2.格式输入函数

格式: scanf(“格式控制串”,地址表)

功能:按指定格式从键盘读入数据,存入地址表指定
存储单元中,并按回车键结束
返值:正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符&

目前,scanf支持的格式字符很多,如下表:
格式输入函数
scanf函数支持的格式说明符可以带以下修饰符:
scanf函数修饰符
例1

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

例 2

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

用“%c”格式符时,空格和转义字符作为有效字符输入
例子

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

总结
输入数据时,遇以下情况认为该数据结束:
遇空格、TAB、或回车
遇非法输入
遇宽度结束

例子

ret=scanf("%d%c%f",&a,&b,&c);
若输入1234a123o.26
则a为1234, b为'a', c为123

三、输入函数的垃圾处理及字符串的输入输出

1.输入函数留下的“垃圾”

由于用户输入时会用回车确实,所以使用输入函数可能会留下垃圾
例子

int x;
char ch;
scanf("%d",&x);//输入后会按回车进行确认
scanf("%c",&ch);
printf("x=%d,ch=%d\n",x,ch);
运行后输入37,然后按回车键 没有第二次输入 程序直接打印结果
37
x=37,ch=10

后一个输入没有生效,是因为取到了回车的ASCII表值10,如下图
回车的ASCII
方法1:用getchar()清除

int x;
 char ch;
 scanf(%d”,&x);
 getchar();
 ch=getchar();
 printf(“x=%d, ch=%d\n”, x, ch);
运行后输入37 按回车 输入a
结果为
x=37, ch=97

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

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

2.字符串输入函数gets

格式: char * gets(char  *s)

例子

功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加’\0’
说明1:输入串长度应小于字符数组维数
说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志。

int main()
{     
	char string[15];
	printf("Input a string:");
    gets(string);
	printf("%s\n", string);
	return 0;
}

3.字符串输出函数

格式:int puts(const char *s)

功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以’\0’结束
例子

#include <stdio.h>
int main( )
{     
	char string[80] = "How are you";
	puts(string);
    return 0;
}
结果为
How are you
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值