format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type
#为 flags的一种,作用:
当type=c,s,d,i,u时没有影响
type=o,x,X时,分别在数值前增加’0’,”0x”,”0X”
type=e,E,f时,总是使用小数点
type=g,G时,除了数值为0外总是显示小数点
scanf("%*c%*[^\n]");
这条语句中%*c
表示, 读入一个字符,但是这个字符不保存到变量里,所以后面不需要有对应的char型的参数。%*[^\n]
表示读入一个字符串,字符串里的字符只能是由[]里指定的字符,并且这个字符串也不保存。假如是%*[abcd]
, 只能输入abcd所组成的字符串,如aabbddcc,如果遇到其他字符,scanf函数就会返回。这里是%*[^\n]
, ^表示“非”的意思,\n
是换行, %*[^\n]
表示读入所有不是换行的字符。所以 scanf("%*c%*[^\n]");
表示,读入一个字符,再读入一串不是换行的字符,这些都不保存,然后返回。其实就是,跳过一行的意思。