C语言——字符串和格式输入输出

一.scanf()函数

scanf()中的格式字符串表明字符输入流的目标数据类型。scanf()函数使用指向变量的指针。

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

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

例如以下这个程序:

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

	printf("enter your age,assets,and favorite pet.\n");
	scanf("%d %f", &age, &assets);
	scanf("%s", pet);
	printf("%d $%.2f %s\n", age, assets, pet);
	return 0;
}
ANSI C中scanf()的转换说明
转换说明含义
%c把输入解释成字符
%d把输入解释成有符号十进制整数
%e、%f、%g、%a把输入解释成浮点数(C99标准新增了%a)
%E、%F、%G、%A把输入解释成浮点数(C99标准新增了%A)
%i把输入解释成有符号十进制整数
%o把输入解释成有符号八进制整数
%p把输入解释成指针(地址)
%s把输入解释成字符串。从第1个非空白字符开始,到下一个空白字符之前的所有字符都是输入
%u把输入解释成无符号十进制整数
%x、%X把输入解释成有符号十六进制整数
scanf()转换说明中的修饰符
转换说明含义
*

抑制赋值

示例:"%*d"

数字

最大字段宽度。输入达到最大字段宽度处,或第1次遇到空白字符时停止

示例:"%10s"

hh

把整数作为signed char或unsigned char类型读取

示例:"%hhd"、"%hhu"

ll把整数作为long long或unsigned long long类型读取(C99)
示例:"%lld"、"%llu"
h、l或L"%hd"和"%hi"表明把对应的值存储为short int类型
%ho"、"%hx"和"%hu"表明把对应的值存储为 unsigned short int 类型
"%ld"和"%li"表明把对应的值存储为long 类型
"%l0"、"%1x"和"%lu"表明把对应的值存储为unsigned" 1ong 类型
"%le"、"%lf"和"%lg"表明把对应的值存储为double 类型
在e、f和g前面使用L而不是l,表明把对应的值被存储为long double类型。如果没有修饰符,d、i、o和x表明对应的值被存储为int 类型,f和g表明把对应的值存储为float类型
j在整型转换说明后面时,表明使用intmax_t 或uintmax_t类型(C99)
示例:"%jd"、"%ju"
z在整型转换说明后面时,表明使用sizeof 的返回类型(C99)
示例:"%zd"、"%zo"
t在整型转换说明后面时,表明使用表示两个指针差值的类型(C99)
示例:"%td"、"%tx"

二.printf()和scanf()的*修饰符

        printf()和scanf()都可以使用*修饰符来修改转换说明的含义。但是,它们的用法不太一样。首先,我们来看printf()的*修饰符。

        如果你不想预先指定字段宽度,希望通过程序来指定,那么可以用*修饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是%*d,那么参数列表中应包含*和 d 对应的值。这个技巧也可用于浮点值指定精度和字段宽度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值