【C语言】

C语言中常用的输入输出函数

putchar/getchar

putchar()
功能:向终端输出一个字符
头文件:#include <stdio.h>
函数原型:int putchar(int c);
参数:	c	用来保存要输出字符的ascii码的


#include <stdio.h>

int main(int argc, const char *argv[])
{
	//可以传 字符的 ascii码
	putchar(65);//A
	putchar(10);

	//也可以传字符常量
	putchar('B');//B
	putchar('\n');

	//也可传保存ascii码的变量
	int num = 67;
	putchar(num);//C
	putchar('\n');

	//也可以传一个表达式
	putchar('A'+3);//D
	putchar(10);

	return 0;
}
getchar
功能:在终端获取一个字符
头文件:#include <stdio.h>
函数原型:int getchar(void);
返回值:	输入的字符


#include <stdio.h>

int main(int argc, const char *argv[])
{
#if 0
	char value = 0;
	value = getchar();
	printf("您输入的字符是 [%d] [%c]\n", value, value);
#endif
	
	//当多个getchar连续使用时 要注意清理垃圾字符
	//所谓的垃圾字符 就是我们不想得到的 回车 空格 等

	char v1=0, v2=0, v3=0;
	v1 = getchar();
	getchar();//用来吃掉垃圾字符
	v2 = getchar();
	getchar();//用来吃掉垃圾字符
	v3 = getchar();
	getchar();//用来吃掉垃圾字符
	printf("v1 = [%d] [%c]\n", v1, v1);
	printf("v2 = [%d] [%c]\n", v2, v2);
	printf("v3 = [%d] [%c]\n", v3, v3);

	return 0;
}

puts/gets

puts
功能:向终端输出一个字符串
头文件:#include <stdio.h>
函数原型:int puts(const char *s);
参数:	s	要输出的字符串的首地址


#include <stdio.h>

int main(int argc, const char *argv[])
{
	//可以直接输出字符串常量
	//puts 是自带换行符的
	puts("hello");//hello

	//也可以输出保存字符串的数组
	char str[32] = "beijing";
	puts(str);//beijing

	//也可以输出指向字符串的指针
	char *p = "www.baidu.com";
	puts(p);//www.baidu.com

	//puts遇到 '\0' 就停止了 后面的字符 不再继续输出
	puts("abcd\0efg");//abcd

	return 0;
}
gets
功能:在终端获取一个字符串
头文件:#include <stdio.h>
函数原型:char *gets(char *s);
参数:s	用来保存输入的字符串的缓冲区的首地址


#include <stdio.h>

int main(int argc, const char *argv[])
{
	//注意:使用gets 要保证用来保存字符串的数组足够大 否则会出现越界访问
	char s1[32] = {0};//定义了一个数组 并全部初始化成0

	gets(s1);

	puts(s1);

	return 0;
}

printf/scanf

printf
功能:按照指定的格式,向终端输出一个字符串----格式化输出
头文件:#include <stdio.h>
函数原型:int printf(const char *format, ...);
参数:
format :格式
%c		输出字符
%d		输出整型,有符号
%u		输出整型,无符号
%o		输出八进制
%x		输出十六进制
%f		浮点型
%e		指数形式
%%		输出%
附加格式说明:
l		(小写的L)输出 long 或者 long long 或者double时用的
#		输出前导符
.n		输出n位小数 n是一个数字
m		m是一个数字,可以用来指定输出的数据的位宽
0		如果数据不足指定的位宽 则使用0填充
-		左对齐
+		如果是正数  输出时显示正号 负数会忽略+
... :	可变参,个数和类型取决于format
#include <stdio.h>

int main(int argc, const char *argv[])
{
	int hour = 10;
	int min = 9;
	int sec = 5;

	printf("%d:%d:%d\n", hour, min, sec);// 10:9:5
	printf("%2d:%2d:%2d\n", hour, min, sec);// 10: 9: 5
	printf("%02d:%02d:%02d\n", hour, min, sec);// 10:09:05

	int value = 1234;
	printf("%2d\n", value);//1234  如果指定的位宽不够 以实际为准

	printf("%10d\n", value);//默认右对齐
	printf("%-10d\n", value);//左对齐

	printf("%+d\n", value);// +1234
	value = -100;
	printf("%+d\n", value);// -100  负数会忽略 +

	return 0;
	}
scanf
功能:按照指定的格式,在终端获取数据----格式化输入
头文件:#include <stdio.h>
函数原型:int scanf(const char *format, ...);
参数:
format :格式
和前面printf的用法基本一样。
注意:scanf的格式不能乱写,写成什么样的格式,输入就得按照什么格式输入
... :	可变参,个数和类型取决于format  如果是变量,记得要 &


#include <stdio.h>

int main(int argc, const char *argv[])
{
	//--------------------int-----------------
#if 0
	int m = 0;
	int n = 0;
	//scanf 可以连续获取多个数据
	//输入时 使用 空格 或者 回车 分隔
	scanf("%d%d", &m, &n);
	printf("m = %d, n = %d\n", m, n);
	scanf("%d:%d", &m, &n);//如果是这样写格式 输入时就必须用 : 分隔
							//否则获取不到
	printf("m = %d, n = %d\n", m, n);
#endif

	//------------------char-----------
#if 0
	char m;
	scanf("%c", &m);
	printf("%c\n", m);
#endif

	//-------------float--------------
#if 0
	float m;
	scanf("%f", &m);
	printf("%f\n", m);
#endif

	//----------------string--------
	char str[32];
	//scanf("%s", str);//数组名就是首地址  无需加  &
	//printf("%s\n", str);
	//scanf不能输入带有空格的字符串
	//如果想输入带有空格的字符串  可以使用  gets
	//或者使用正则表达式也行 --不常用
	scanf("%[^\n]", str);//--正则表达式,了解即可
	printf("%s\n", str);

	return 0;
}

垃圾字符的处理

#include <stdio.h>

int main(int argc, const char *argv[])
{
	//场景1:多次连续调用 getchar() 时
	//处理方式:在每两次调用 getchar之间加一个getchar 用来吃掉垃圾字符 回车

#if 0
	//场景2:多次使用scanf连续获取字符时
	//处理方式:在每两次调用 scanf之间加一个getchar 用来吃掉垃圾字符 回车
	char a,b,c;
	scanf("%c", &a);
	getchar();
	scanf("%c", &b);
	getchar();
	scanf("%c", &c);
	printf("a = [%d] [%c]\n", a, a);
	printf("b = [%d] [%c]\n", b, b);
	printf("c = [%d] [%c]\n", c, c);
#endif
	//场景3:使用scanf 一次获取多个字符时
	char a,b,c;
	//scanf("%c%c%c", &a, &b, &c);
	
	//处理方式1:使用抑制符来处理  %*c
	//抑制符的作用是获取数据 但是 不赋值给后面的变量
		//注意:抑制符是一定要吃掉一个字符的 他并不管是不是垃圾字符
	//scanf("%c%*c%c%*c%c", &a, &b, &c);

	//处理方式2: 可以在格式中使用空格来处理--推荐的处理方式
		//空格可以吃掉多个空格 或者 回车
	scanf("%c %c %c", &a, &b, &c);
	printf("a = [%d] [%c]\n", a, a);
	printf("b = [%d] [%c]\n", b, b);
	printf("c = [%d] [%c]\n", c, c);

	//注意  %d 是不会有垃圾字符的问题的
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值