输入与输出

1.printf()

转换说明输出
%c单个字符
%d有符号十进制整数
%e/%E浮点数,e记法

%f        

浮点数十进制
%p指针
%s字符串
%u无符号十进制整数

%%

打印一个百分号

带修饰符的%

 例子:

 

 

 

格式:

printf(格式字符串,待打印项1,待打印项2,.......);

例:

#include<stdio.h>
int main(void) {
	char name[] = "hqw";
	int age = 19;
	printf("my name is %s,age is %d,3*2=%d", name,age,3*2);
	return 0;
}

printf()返回值:

#include<stdio.h>
int main(void) {
	char name[] = "hqw";
	int age = 19;
	int pr;
	pr = printf("my name is %s,age is %d,3*2=%d \n", name,age,3*2);
	printf("%d", pr);
	return 0;
}

包括空格和换行符

打印较长的字符串:

         两种方式

        

         注意第二种前面不要空格,否则会带空格

 


2. scanf()

        获取用户输入

如果用scanf()读取基本变量类型的值,在变量名前加上一个&;

如果用scanf()把字符串读入字符数组中,不要使用&

        在每个输入项之间需要输入至少一个换行符、空格或制表符即可,但有一例外:%c

示例:

#include<stdio.h>
int main(void)
{
	int age;
	float assets;
	char pet[30];

	printf("Enter your age, assets, and favourite pet.\n");
	scanf("%d %f", &age, &assets);
	scanf("%s", pet);
	printf("%d $%.2f %s\n", age, assets, pet);
	return 0;

}

 格式字符串中的普通字符

        scanf()函数允许把普通字符放在格式字符串中。除空格字符外的普通字符必须与输入字符串严格匹配,例:

        scanf(”%d,%d", &n, &m);

        用户必须像下面这样输入两个整数:

        88,121

        但是,由于scanf()会跳过整数前面的空白,所以下面两种也可以:

        88, 121

        和

        88,

        121

        格式字符串中的空白意味着跳过下一个输入项前面的所有空白,例如:

scanf("%d ,%d", &n, &m);

以下的输入格式都没问题:

88,121

88 ,121

88 , 121

 除了%c,其他转换说明都会自动跳过待输入值前面的所有空白,因此scanf("%d%d", &n, &m)和scanf("%d %d", &n, &m);是一样的。对于%c,scanf("%c", &ch)从输入中的第1个字符开始读取,而scanf(" %c", &ch)则从第1个非空白字符开始读取。

scanf()的返回值

        scanf()函数返回成功读取的项数。如果没有读取任何项,且需要读取一个数字而用户却输入一个非数值字符串,scanf()便返回0。当scanf()检测到“文件结尾”时,会返回EOF(EOF是stdio.h中定义的特殊值,通常用#define指令把EOF定义为—1)。

示例:

#include<stdio.h>
int main(void)
{
	int age;
	float assets;
	char pet[30];
	int sc1, sc2;

	printf("Enter your age, assets, and favourite pet.\n");
	sc1 = scanf("%d %f", &age, &assets);
	sc2 = scanf("%s", pet);
	printf("%d $%.2f %s\n", age, assets, pet);
	printf("%d %d", sc1,sc2);
	return 0;

}

第一项输入错误类型,返回了0


*修饰符 

1.printf()

#include<stdio.h>
int main(void)
{
	printf("%*d\n", 10, 200);
	printf("%*.*f", 10, 2, 252.2);
	return 0;
}

对于%*d,后面第一个参数指定字符的宽度,小于则不会生效;第二个为输出参数

对于%*.*f,后面第一个参数指定字符的宽度,小于则不会生效;第二个参数为小数点位数,第三个为输出参数

2.scanf()

        *会使scanf()跳过这一项

示例:

#include<stdio.h>
int main(void)
{
	int number;
	scanf("%*d %*d %d", &number);
	printf("%d", number);
	return 0;
}


getchar()与putchar()

        每次处理一个字符

ch = getchar(); // 效果等同于scanf("%c", &ch)
putchar(); // 效果等同于printf("%c", ch)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值