格式输入输出函数
- 格式:ppt
- 大小:172.00 KB
- 文档页数:10
格式化输入/输出函数格式输出函数(printf)格式字符表格式字符说明d或i 以十进制形式输出带符号整数(正数不输出符号)o 以八进制形式输出无符号整数(不输出前缀0)x,X 以十六进制形式输出无符号整数(不输出前缀0x),对于x用abcdef输出;对于X用ABCDEF输出u 以十进制形式输出无符号整数f 以小数形式输出单、双精度实数,隐含输出6位小数e,E 以指数形式输出单、双精度实数,数字部分小数位数为6位小数,指数部分占5位,用“E”时,指数以大写表示g,G 以%f或%e中较短的输出宽度输出单、双精度实数,不输出无意义的0,用“G”时,则指数以大写表示c 输出单个字符s 输出字符串p 输出标量的内存地址未指定宽度和指定输出宽度时的输出结果输出语句输出结果printf(“%3d\n”,4321); 4321(按实际位数输出)printf(“%f\n”,123.54); 123.540000(按实际需要宽度输出)printf(“%12f\n”,123.54); 凵凵123.540000(输出右对齐,左边填空格)printf(“%e\n”,123.54); 1.235400e+002(按实际需要宽度输出)printf(“%14e\n”,1213.54); 凵1.235400e+002(输出右对齐,左边填空格)printf(“%g\n”,123.5); 123.5(%f格式比采用%e格式输出宽度小)printf(“%8g\n”,123.5); 凵凵凵123.5(输出右对齐,左边填空格)指定精度时的输出结果输出语句输出结果printf(“%8.3f\n”,123.55); 凵123.550printf(“%8.1f\n”,123.55); 凵凵凵123.6printf(“%8.0f\n”,123.55); 凵凵凵凵凵124printf(“%g\n”,123.56789); 123.568printf(“%.7g\n”,123.56789); 123.5679printf(“%.5s\n”,”abcdefg”); abcde注:在VC中float类型有7位有效数字,double类型有16位有效数字标志及其意义标志意义-输出结果左对齐,右边填空格;缺省则输出结果右对齐,左边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号﹟对c,s,d,u类无影响;对o类,在输出时加前缀0,对x类,在输出时加前缀0x 0 对数值格式,在指定宽度的同时,输出数据左边空格处填以数字0标志的用法输出语句输出结果printf(“%6d\n”,111); 凵凵凵111printf(“%-6d\n”,111); 111凵凵凵printf(“%+d\n”,111); +111printf(“% d\n”,111);/*%和d之间有一个空格*/ 凵111printf(“% d\n”,-111);/*%和d之间有一个空格*/ -111printf(“%#o\n”,10); 012printf(“%#x\n”,16); 0x10printf(“%06.2f\n”,1.6); 001.60格式输入函数(scanf)Scanf格式字符格式字符说明d,i 输入有符号的十进制整数o 输入无符号的八进制整数x,X 输入无符号的十六进制整数u 输入无符号的十进制整数f,e 输入实型数(用小数形式或指数形式)c 输入单个字符s 输入字符串,结果存入字符数组中。
C语言输入输出函数printf与scanf的用法格式C语言中的输入输出函数printf和scanf是我们在编程中经常用到的两个函数。
它们分别用于向屏幕输出数据和从键盘输入数据。
1.printf函数printf函数是C语言中用于输出的标准函数,其基本格式如下:printf("format string", argument);其中,format string是格式化字符串,它可以是任何你希望输出的文本或特定格式的文本,argument是你要输出的参数,可以是任何数据类型,例如int, float, double等。
例如,如果你想输出一个整数,你可以这样写:int x = 10;printf("The value of x is: %d", x);在这个例子中,%d是一个格式说明符,它表示一个整数。
在输出的时候,%d 会被x的值替换。
printf函数还支持许多其他类型的格式说明符,例如:•%f:浮点数•%c:字符•%s:字符串•%p:指针的值•%x:十六进制数等等。
你可以根据需要选择适合的类型。
2.scanf函数scanf函数是C语言中用于输入的标准函数,其基本格式如下:scanf("format string", argument);与printf类似,format string是格式化字符串,argument是你要输入的参数。
但是,scanf的格式说明符与printf略有不同。
例如,如果你想输入一个整数,你可以这样写:int x;scanf("%d", &x);在这个例子中,%d是一个格式说明符,它表示一个整数。
在输入的时候,你需要在%d前面输入一个数字,然后scanf会把这个数字存储到&x所指向的内存地址中。
注意,这里的&是取地址运算符,表示我们想要的是变量x的内存地址。
scanf函数还支持许多其他类型的格式说明符,例如:•%f:浮点数•%c:字符•%s:字符串(到第一个空格为止)•%p:指针的值•%x:十六进制数(必须以0x或0X开头)等等。
1、输入和输出:输入:输入也叫读,数据由内核流向用户程序输出:输出也称写、打印,数据由用户程序流向内核以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用2、p rintf用法(其缺陷在于带缓存)解释:第一幅图没有加'\n',不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。
变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误(1)格式输出函数的一般形式函数原型:int prin tf(char * format[,argume nt, …]);函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,贝U返回负数。
A、它使用的一般形式为:printf(" 格式控制字符串",输出项列表);B、语句中"输出项列表"列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔; 输出的数据可以是整数、实数、字符和字符串。
C、"格式控制字符串"必须用英文的双引号括起来,它的作用是控制输出项的格式和输出一些提示信息,例如:int i=97; printf("i=%d,%c\n",i,i); 输出结果为:i=97,a语句printf("i=%d,%c\n",i,i); 中的两个输出项都是变量i ,但却以不同的格式输出,一个输出整型数97,另一个输出的却是字符a,其格式分别由"%d" 与"%c"来控制。
语句printf("i=%d,%c\n",i,i); 的格式控制字符串中"i=" 是普通字符, 他将照原样输出;"%d"与"%c"是格式控制符;"\n"是转义字符,它的作用是换行。
格式化输入输出函数(Formatted input output function)1.1.1 formatted input output functionThe Turbo C2.0 standard library provides two console formats, input and output functions, printf (), andScanf () these two functions can read and write data in a variety of formats on a standard input / output device.The printf () function is used to write data to a standard output device (screen); the scanf () function is used to enter data from a standard inputRead data on device (keyboard). The use of these two functions is described in detail below.1. Printf () functionThe printf () function is a formatted output function that is typically output to standard output devices in a specified formatInformation. This is often used when writing programs. The call format of the printf () function is:Printf (< formatted string >, < parameter table >);The formatted string consists of two parts: one is the normal character, the other is the original characterAnother part is formatting the required characters, beginningwith '%', followed by one or more specified characters,Used to determine the format of the output content.A parameter table is a series of parameters that need to be output, and the number must be the output specified by the formatted stringA number of parameters, among the parameters "," separate and sequential correspondence, otherwise there will be unexpectedErrors that cannot be reached.1. formatting specificationsThe formatting specifications provided by Turbo C2.0 are as follows:Thought of thought - thought of thoughtSymbolic action- - - - - - - - - - - - - - - -%d decimal signed integer%u decimal unsigned integer%f floating point numbers%s string%c single characterThe value of the%p pointerFloating point numbers in the%e exponent%x,%X unsigned integer represented by sixteen decimal%0 unsigned integer represented by octal notationThe%g automatically selects the appropriate representationThought of thought - thought of thoughtExplain:(1) you can insert numbers between "%" and "letters" to represent the maximum field width.For example:%3d means output 3 bit integers, not 3 bit, right justified.%9.2f represents the floating-point number of the output field width of 9, in which the decimal digit is 2 and the integer bit is 6,The decimal point is one, not 9, right justified.%8s stands for a string of 8 characters, not 8 characters, right justified.If the length or integer number of the string exceeds the indicated field width, it will be output at its actual length.But for floating point numbers, if the integer bits exceed the indicated integer bit width, they are output by actual integer;If the decimal portion exceeds the indicated decimal width, the output is output from four to five at the width of the description.In addition, if you want to add some 0 before the output value, you should add a 0 before the width of the event.For example:%04d means that when you output a value less than 4 bits, you will fill 0 in front to make the total widthFor 4.If floating-point numbers are used to represent the character or integer output format, the digits after the decimal point represent the maximum width,The number before the decimal point represents the minimum width.For example,%6.9s means a string that is no longer than 6 and not greater than 9. If greater than 9, thenAfter ninth characters, the contents will be deleted.(2) you can add a lowercase letter L between `% 'and' letter ', which means that the output is long.For example:%ld means output long integers%lf means output double floating point numbers(3) you can control the output left aligned or right aligned,i.e., add a "-" number between "%" and "letter"Indicates that the output is left justified, otherwise right justified.For example:%-7d means output 7 bit integers left justified%-10s stands for output, 10 characters left justified2. some special charactersThought of thought - thought of thoughtCharacter action- - - - - - - - - - - - - - - -\n line feed\f screen and paging\r carriage return\t Tab symbol\xhh means that a ASCII code is represented by 16 inputs,Among them, HH is 1 to 2 16 hexadecimal numbersThought of thought - thought of thoughtThe printf () function learned in this section, and the data types learned in the previous section, prepare the following procedureOrder to deepen understanding of the Turbo C2.0 data type.In 1 cases#include#includeInt, main (){Char, C, s[20], *p;Int, a=1234, *i;Float f=3.141592653589;Double x=0.12345678987654321;P= "How do you do"";Strcpy (s, Hello, Comrade);*i=12;C='\x41';Printf (a=%d\n, a); / * output decimal integer a=1234*/ Printf (a=%6d\n, a); / * the output 6 decimal number a= 1234*/ Printf (a=%06d\n, a); / * the output 6 decimal number a=001234*/Printf ("a=%2d\n", "a"); /*a more than 2 bits, output a=1234*/ at actual valuePrintf (*i=%4d\n, *i); / * output 4 decimal integer *i= 12*/Printf (*i=%-4d\n, *i); / * output left aligned 4 decimal integer *i=12*/Printf (i=%p\n, I); / * i=06E4*/ output.Printf (f=%f\n, f); / * output floating-point numberf=3.141593*/Printf (f=6.4f\n, f); / * output 6 the decimal floating-point number 4F=3.1416*/Printf (x=%lf\n, x); / * output long floating pointx=0.123457*/Printf (x=%18.16lf\n, x); / * output 18 the 16 decimal floating-point longNumber x=0.1234567898765432*/Printf (c=%c\n, c); / * output character c=A*/Printf (c=%x\n, c); / * c=41*/ the output character of the ASCII code valuePrintf (s[]=%s\n, s); / * output string array s[]=Hello, Comrade*/Printf (s[]=%6.9s\n, s); / * s[]=Hello string output of up to 9 characters,Co*/Printf (s=%p\n, s); / * the first character string array output address s=FFBE*/Printf (*p=%s\n, P); / * p=How do you do*/ output string pointerPrintf (p=%p\n, P); / * pointer output value p=0194*/Getch ();Retunr 0;}The address values in the above results may differ on different computers.In example 1., the first statement "#include" means to call another file, stdio.h, thisIs a header file that includes data type definitions and function descriptions for all standard input and output library functions.Turbo C2.0 defines and explains the variables and function types that each library function usesIn the header file "*.h", users must use #include<*.h> or #include "* H" when using these functions"The statement calls the appropriate header file for the connection. If this statement is not used, the connection will go wrongError.Two, scanf () functionThe scanf () function is a formatted input function that reads input information from a standard input device (keyboard).Its call format is:Scanf (< formatted string >, < address table >);A formatted string consists of the following three different characters;1.: format specifier format specifier and printf () function in the same format specifier.2. blank characters: blank character will make scanf (omitted) function in the read operation input in one or moreBlank character.3. non white space characters: a non blank character will make the scanf () function tick off when readThe same character as a blank character.The address table is the address of all variables that need to be read, not the variables themselves. This is associated with the printf () functionIt's quite different. Pay special attention to it. The addresses of each variable are separated from "" "" "" "" "" "".Cases of 2:{Int, I, j;Printf ("I, j=, \n");Scanf ("%d", "%d", "&i", "&j");}In this example, the scanf () function to read an integer, then the next input comma out of theThen read into another integer. If this particular character is not found, the scanf () function terminates. ifThe spaces between arguments are spaces, and one or more spaces must be entered between the arguments.Explain:(1) for strings, arrays, or string pointer variables, because the array name and pointer variable name itselfIs the address, so when you use the scanf () function, you don't need to add the '&' operator in front of them.In 3 cases{Char, *p, str[20];Scanf (%s, P); / * * / from the keyboard input stringScanf ("%s", STR);Printf (%s\n, P); / * * / string output to the screenPrintf ("%s\n", STR);}(2) you can add an integer between the "%" formatting specifications in the formatted stringThe maximum number of bits in any read operation.For example 3, if you can only enter 10 characters for string pointer P, then the first scanf () function statementForScanf ("%10s", P);When the program is running, once the number of characters is greater than 10, the P is no longer read in, while the latter one readsThe entry function, that is, scanf ("%s", "STR"), is read from the Eleventh character.There is a problem with the actual use of the scanf () function, as illustrated below:When multiple scanf () functions are used to continuously enter multiple character variables, for example:(main){Char, C1, c2;Scanf ("%c", &c1);Scanf ("%c", &c2);Printf (C1, is,%c, C2, is,%c, c2\1, C2);}Run the program, enter a character A, enter (to complete the input must return), in the implementation of scanfWhen ("%c", "&c1"), assign "A" to the variable C1, but the carriage return remains in the buffer and executes the input statementWhen scanf ("%c", "&c2"), the variable C2 output is a blank line. If you enter AB and then enter, then the output nodeThe results are: C1, is, A, C2, is, B.To solve the above problem, you can add the clearing function fflush () to the input functionThe method will be described at the end of this section. Modify the above program to become:#include(main){Char, C1, c2;Scanf ("%c", &c1);Fflush (stdin);Scanf ("%c", &c2);Printf (C1, is,%c, C2, is,%c, C1, C2);}1.1.2 non formatted input output functionThe non formatted input output function can be replaced by the Standard formatted input output function described above, butThese functions are less compiled and relatively small in memory, thus increasing the speed and using them at the same timeConvenient. The following are described separately.1. Puts () and gets () functions1. puts () functionThe puts () function is used to write strings to the standard output device (screen) and to wrap them:Puts (s);Where s is a string variable (string, array name, or string pointer).The function of the puts () function is the same as the language printf ("%s\n", "s").Cases of 4:(main){Char s[20], *f; / * string array and pointer variables.Strcpy (s, "Hello Turbo C2.0!"); / * * / string array variable assignmentF= "Thank you"; / * * / string pointer variable assignmentPuts (s);Puts (f);}Explain:(1) the puts () function can only output strings, cannot output values, or format transformations.(2) you can write strings directly to the puts () function. Such as:Puts ("Hello, Turbo, C2.0");2. gets () functionThe gets () function is used to read strings from the standard input device (keyboard) until the carriage returns, but carriage returnsDoes not belong to this string. Its call format is:Gets (s);Where s is a string variable (string, array name, or string pointer).The gets (s) function is similar to scanf ("%s", "&s"), but not exactly the same, using scanf ("%s", "&s")When a function enters a string, there is a problem that if the space is entered, the input string is considered to be over,The character after the space will be processed as the next entry, but the gets () function will accept the entire input characterString until carriage returns.In 5 cases(main){Char, s[20], *f;Printf ("What's, your, name, \n");Gets (s); / * * / wait until enter the end of the input stringPuts (s); / * * / the input string outputPuts ("How, old, are, you,...");Gets (f); Puts (f); }。
输入输出函数区别如下:一、printf 、sprintf、fprintf的区别都是把格式好的字符串输出,只是输出的目标不一样:1)、printf,是把格式字符串输出到标准输出(一般是屏幕、控制台,可以重定向),是和标准输出文件(stdout)关联的;原型为: int printf(const char *format[,argument]...);2)、sprintf,是把格式字符串输出到指定的字符串中,所以参数比printf多一个char*。
这是目标字符串地址;原型为:int sprintf(char *buffer,const char *format[,argument]...);3)、fprintf,是把格式字符串输出到指定文件设备中,fprintf是格式化输出到一个stream,通常是到文件,所以参数比printf多一个文件指针FILE*;原型为:int fprintf(FILE *stream,const char *format[,argument]...);. Fprintfc语言把文件看作一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。
根据数据的组成形式,可分为ASCLL文件和二进制文件。
ASCLL文件又称为文本文件(text),它的每个字节放一个ASCLL代码,代表一个字符。
二进制文件是内存中的数据按其在内在中的存储形式原样输出到磁盘上存放。
1).fprintf(fp,"%d",buffer);是将格式化的数据写入文件;fprintf(文件指针,格式字符串,输出表列);fwrite(&buffer,sizeof(int),1,fp); 是以二进位方式写入文件fwrite(数据,数据类型大小(字节数),写入数据的最大数据,文件指针);由于fprintf写入是,对于整数来说,一位站一个字节,比如1,占1个字节;10,占2个字节;100,占3个字节;10000,占5个字节;所以文件的大小会随数据的大小而改变,对大数据空间占用很大。
C语⾔的标准输⼊输出格式C语⾔标准库概述 1)库函数分类 我们暂时需要记住的有: 标准输⼊输出函数库:stdio 数学应⽤函数库:math 字符串处理函数库:string 2)调⽤函数库时,我们需要预编译指令: 即://或者#include"头⽂件名"需要注意的是,第⼀种写法,⼀般在使⽤标准函数库时使⽤,第⼆种写法,⼀般在使⽤⽤户⾃⼰定义的函数库时使⽤。
格式输出函数:printf 1)前⾔: 从计算机向外部设备输出信息称为输出,即将计算机内的信息以打印或者存储的形式转到终端。
printf函数在<stdio.h>函数库中 预编译指令为:#include<stdio.h> 2)标准格式输出: printf("格式输出控制表列",输出参数表列); 格式输出控制表列包括普通字符和格式字符组成,普通字符如:hello,world; 格式字符以%开头,后跟⼀个字符表⽰数据类型。
如:%d,%f等。
输出参数表列在控制表列中如果没有格式字符,可以省略:如:printf("Hello,world!"); 这⾥,我们给出两个实例帮助理解:printf("Hello,world!");printf("%d",100);printf("521%d!",1314); 3)格式控制符 在明⽩输出函数的基本使⽤⽅法后,我们剖析⼀下格式控制符。
1、%d格式 标准输出函数中以%作为格式输出控制索引。
%d是以⼗进制在屏幕上显⽰输出参数表列的值。
当然输出参数表列可以为字符型,整型,浮点型等类型,不过最终都以10进制输出。
我们看⼀个例⼦:main(){char c='A';int a=1,b=2;printf("c=%d,a/b=%d,b/a=%d,(float)a/b=%d",c,a/b,b/a,(float)a/b);printf("123.456=%d",123.456);printf("%d");reeturn 0;}最终的输出结果出乎我们意料,c=65,a/b=0,b/a=2,(float)a/b=0123.45=4466765992367460 我们在这⾥解释⼀下,⾸先字符型的'A'在ASICC中的数值是65,所以最终以⼗进制输出的是65;由于,a/b的值理应为0.5,在这⾥,由于是整型输出,所以⼩数部分被截断,最终的结果为0,同理,我们不难理解最后的(float)是什么情况,那么b/a的结果显然是2,我们不在阐述。