《c语言数据的主要输入输出函数.docx》由会员分享,可在线阅读,更多相关《c语言数据的主要输入输出函数.docx(8页珍藏版)》请在第壹文秘上搜索。
1、C语言数据的主要输入输出函数C语言主要输入输出函数scanfzprintf# include# includeintmain()scanf(1,%If%lf%If”,&a,&b,&c);disc=b*b-4*a*c;p=b/(2.0*a);q=sqrt(disc)(2.0*a);xl=p+q;2=p-q;printf(xl=%7.2n2=%7l2nn,xlzx2);return0;在输入数据1,3,2(对应a,b,c)这3个数之间用空格分隔,最后按回车键。intscanf(constchar*formatzargjist)SCanf主要从标准输入流中获取参数值/Ormat为指定的参数格式及参数
2、类型。如scanf(%s,%d,%flstr,icount,c)o变量实际用它们的内存地址表示,在标准输入流中输入常量序列,会自动赋值给对应的变量地址。scant函数的返回值为int值,即成功赋值的个数。如果函数调用成功,则会返回3,可以通过语句if(scanf(n%sz%d,%fnzstr,icount,c)!=3).来判断用户输入是否正确。scanf函数返回成功读入的数据项数,读入数据时遇到了文件结束则返回EOFo如:SCanfe%d,%d”,&a,&b);函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;如果只有a被成功读入,返回值为1;如果a和b都未被成功读入
3、,返回值为0;如果遇到错误或遇到endOffile返回值为EOFoendoffile为Ctrl+z或者CtrI+d0按八+z,再按回车,表示中止数据流输入。intprintf(constchar*formatzargjist)Printf主要是将格式化字符串输出到标准输出流中,在stdio.h头文件中定义了标准的输入和输出,分别是StdinzStdout(通往文件的通道)。argjist可以是变量名,也可以是表达式,但最终都会以值的形式填充进format中。printf的返回值是输出的字符数,例如,printf(123)的返回值是3,而Printf(123n)的返回值是4。1.转换说明符%c字
4、符%d有符号十进制整数%f浮点数(包括float和doulbe)%e(%E)浮点数指数输出e(E-)记数法%g(%G)浮点数不显无意义的零“0%i有符号十进制整数(与%d相同)%u无符号十进制整数%o八进制整数0123%x(%X)十六进制整数0x1234%p指针%s字符串%2标志左对齐:-n%-20s右对齐:+n%+20s空格:若符号为正,则显示空格,负则显示。对。类,在输出时加前缀O;对X类,在输出时加前缀Ox;对e,g,f类当结果有小数时才给出小数点。3.格式字符串(格式)标志输出最少宽度.精度长度类型n%-md:左对齐,若m比实际少时,按实际输出。%m.ns:输出m位,取字符串(左起)n
5、位,左补空格,当nmorm省略时m=n。n%m.nf:输出浮点数,m为宽度,n为小数点右边数位。长度:为h短整形量,1为长整形量Printf的格式控制的完整格式:%-.nl或h格式字符下面对组成格式说明的各项加以说明:%:表示格式说明的起始符号,不可缺少。-:有-表示左对齐输出,如省略表示右对齐输出。O:有O表示指定空位填0,如省略表示指定空位不填。m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。I或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。格式字符格式字符用
6、以指定输出项的数据类型和输出格式。d格式:用来输出十进制整数。有以下几种用法:%d:按整型数据的实际长度输出。%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。%d:输出长整型数据。格式:以无符号八进制形式输出整数。对长整型可以用”1。“格式输出。同样也可以指定字段宽度用%mo格式输出。X格式:以无符号十六进制形式输出整数。对长整型可以用“x”格式输出。同样也可以指定字段宽度用%mx”格式输出。U格式:以无符号十进制形式输出整数。对长整型可以用“u”格式输出。同样也可以指定字段宽度用%mu格式输出。C格式:输出一个字符。S格式:用来输出一个串。
7、有几中用法%s:例如:Printfe%s丁CHlNA。输出“CHINA”字符串(不包括双引号)。%ms:输出的字符串占m歹I,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns:输出占m歹k但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果nm,则自动取n值,即保证n个字符正常输出。f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:%f:不指定宽度,整数部分全部输出并输
8、出6位小数。%m.nf:输出共占m歹1,其中有n位小数,如数值宽度小于m左端补空格。%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。e格式:以指数形式输出实数。可用以下形式:%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。%m.ne和%-m.ne:m、n和/字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。如果想输出字符“%”,则应该在格式控制字符串中用连续两个表示,如:printf(,%f%z1.0/3);输出0.333333%对于单精度数,使用f格式符输出
9、时,仅前7位是有效数字,小数6位。对于双精度数,使用f格式符输出时,前16位是有效数字,小数6位。(1)用scanf函数输入a,b,c的值,在scant函数中括号内变量a,b,c的前面,要用地址符&,即&aAbAco&a表示变量a在内存中的地址。scanf函数表示从终端输入的3个数据分别送到地址为&a,&bc的存储单元,也就是赋给变量a,b,c。双撇号内用If格式声明,表示输入的是双精度型实数。(2)在scanf函数中,格式声明为If%lf%IF,连续3个%lf。要求输入3个双精度实数。输入数据时,两个数之间用空格分开。如果输入的是整数,但指定用If格式输入,系统会先把这3个整数转换成实数LO,3.0,2.0.然后赋给变量a,b,c。(3)在printf函数中,不是简单地用f格式声明,而是在格式符f的前面加了7.2,表示在输出Xl和x2时,指定数据占7列,其中小数占2歹山可以根据实际要求限制输出小数的位数。