printf的格式问题,该函数的返回值是字符串的字节数,这种返回可以在sprintf中实现字符串的多次打印问题,可以参看锐捷的笔试题。printf的打印存在各种格式,其中比较容易被考试的就是附加格式说明字符:
l 用来实现长整型整数,可以加在格式符d、o、x、u前面。
m(代表一个正整数)数据的最小宽度
n (代表一个正整数) 对实数,表示输出n位小数,对字符串表示截取的字符串个数。
- 输出的数字或者字符在域内向左靠。
上面的四种附加格式都是笔试中经常要考的内容,虽然都是小问题但是却是失分的地方,说明了我们的基础不过关。特别是当字符串采用附加格式输出时就比较容易出错啦。
%ms,输出的字符串占m列,如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则将左补空格。
%-ms,若串长小于m,则在m的返回内字符串向左靠,右补空格。
%m.ns,输出占m列,但只取字符串左端n个字符,这n个字符输出在m列的右端,左补空格。
%-m.ns,其中m,n和%m.ns相同,n个字符输出在m列的左端,右补空格。当n>m,m自动取值为n,即正常输出n个字符。
%m.nf,输出的数据占m列,其中n位小数。如果数据长度小于m,则左端补空格。
%-m.nf与%m.nf只是使输出的数值向左端靠,右端补空格。
还需要注意的是打印百分号采用"%%"实现的。
scanf的格式设置,和printf有一定的相似性,但是也有一定的区别。scanf不能限制小数点的宽度,只有位域宽度,没有n值,还需要注意存在一个忽略符"*",比如%*3d,忽略掉3位整数,跳过不赋值给变量。
l 用于输入长度整形数据
h 用于输入短整型数据
域宽 指定输入数据所占的宽度,域宽为正整数。
* 表示本输入项在读入后不赋给相应的变量。
今天就简要的总结一下基本的格式,虽然这些都是基本的不能再基本的知识,但是笔试就只能这样啦。
基础真的很重要,抓紧复习吧。