C连载22-scanf转换说明中的修饰符

时间:2020-09-14 09:39:21   收藏:0   阅读:52

一、scanf()转换说明中的修饰符

转换说明 含义
* 抑制赋值,示例:“%*d"
数字 最大字段宽度,输入达到最大字段宽度处,或者第一次遇到空白字符为止,示例:"%10s"
hh 把整数作为signed char 或者 unsigned char 类型读取
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类型;"%lo"、“lx”和“%lu”表明把对应的值存储为unsigned long类型;“%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的返回类型,示例:"%zd"、”%zo"
t 在整形转换说明后面时,表明使用表示两个指针差值的类型 ,示例:"%td"、"%tx"

二、格式字符串中的普通字符

scanf("%d,%d",&n,&m);//该函数将其解释成用户将会输入一个数字,一个逗号,然后再输入一个逗号
scanf("%c",&ch);//从输入的第一个字符开始读取
scanf(" %c",&ch);//从第一个非空白字符开始读取
#include<stdio.h>
#pragma warning(disable:4996)
int D22_1_varwid(void) {
	unsigned width, precision;
	int number = 256;
	double weight = 242.5;

	printf("Enter a field width:\n");
	scanf("%d", &width);
	printf("The number is :%*d:\n", width, number);
	printf("Now enter a width and a precision.\n");
	scanf("%d %d", &width, &precision);
	printf("Weight = %*.*f\n", width, precision, weight);
	printf("Done!\n");

	return 0;
}

技术分享图片

三、源码:

原文:https://www.cnblogs.com/ruigege0000/p/13664285.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!