输出函数scanf()使用小记

 本篇摘自C Primer Plus

scanf()printf()类似,也使用格式字符串和参数列表。scanf()中的格式字符串表明字符输入流的目标数据类型。两个函数的主要差别在参数列表中。printf()函数使用变量、常量和表达式,而scanf()函数使用指向变量的指针。

转换说明 含义
%c 把输入解释成字符
%d 把输入解释成有符号十进制整数
%o 把输入解释成有符号八进制整数
%x  %X 把输入解释成有符号十六进制整数
%s 把输入解释成字符串从第1个非空白字符开始,到下一个空白字符之前所有字符都是输入
%p 把输入解释成指针(地址)
%u 把输入解释成无符号十进制整
转换说明 含义
* 抑制赋值
数字 最大字段宽度。输入达到最大字段宽度处,或第1次遇到空白字符时停止

除了%c其它转换说明符都会自动跳过待输入值前面的所有空白 


  •  %d转换说明读取一个整数,scanf()函数每次读取一个字符,跳过所有空白字符。直到遇到第一个非空白字符开始读取scanf()函数希望找到一个数字字符或一个符号(+或-)。如果找到一个数字或符号,它便保存该字符,并读取下一个字符。如果遇到一个非数字字符,它便认为读到了整数的末尾scanf()把非数字字符放回输入。意味着程序下一次读取输入时,首先读到的是程序上一次读取丢弃的非数字字符
  • 如果第一个非空白字符是A而不是数字,scanf()将停在那里,并把A放回输入中,不会把值赋给指定变量。程序下一次读取输入时首先读取的是字符A
#include

int main(int argc, char const *argv[])
{
	int n = 100;
	char m;
	printf("Please enter a number or character.\n");
    scanf("%d",&n);                            
    scanf("%c",&m);        
    printf("%d\n", n );    
    printf("%c\n", m );
	return 0;
}

输入为 空格+12+A,输出为下图。

Please enter a number or character.
 12A
12
A
请按任意键继续. . .

输入为 A,输出为下图 。

Please enter a number or character.
A
100
A
请按任意键继续. . .
  •  scanf()函数允许把普通字符放在格式字符串中。除空格字符串外的普通字符串必须与输入字符串严格匹配
  • 格式字符串中的空白意味着跳过下一个输入项前面的所有空白
	    scanf("%d,%d", &n, &m); //用户输入必须为88,121
	    scanf("%c",&ch);        //从输入中的第1个字符串开始读取
	    scanf(" %c",&ch);       //从第1个非空字符串开始读取
  • scanf()函数中*的用法。 把*放在%和转换字符之间,会使得scanf()跳过相应的输出项。
	#include

	int main(int argc, char const *argv[])
	{
		int n;
		printf("Please enter three integers:\n");
		scanf("%*d %*d %d", &n);
		printf("The last integer was %d\n", n );
		return 0;
	}
Please enter three integers:
2012 2013 2014
The last integer was 2014
请按任意键继续. . .

 

 

你可能感兴趣的:(C语言)