今天学习的是c语言中的输入输出,关于输入输出这里需要提到一个关于缓冲区的概念。字符无论是输入还是输出都是先存放在缓冲区,然后根据实际的情况从缓冲区中得到数据进行输入输出。
1.字符数据的输入和输出:
putchar(x):用于输出一个字符.这个函数的返回值是类型是int,返回值等于所输出字符的ASCII码值,但是如果输出失败,则返回值位-1.
getchar():用于从缓冲区取得一个字符。这个函数的返回值类型为int,返回值为获得字符的ASCII值。
2.格式化输入和输出:
printf("格式控制字符串",可选参数): 该函数用于格式化输出数据。
格式控制字符串:占位符和其他字符。其他字符原样输出,占位符用于以不同的数据类型格式输出数据。
关于几个特殊的占位符及其意义:
整型中:%x:表示将数据以十六进制输出
%X:表示将数据以十六进制输出,并且其中的abcdef以大写的形式输出。
%o:表示将数据以八进制输出
浮点型中:%e:表示将数据以科学计数法的形式输出
%E:表示将数据以科学计数法的形式输出,并且后面的e为E;
%g:表示以一种更简洁的方式输出,不会输出无意义的0;
其中注意:想要格式化输出 ‘%’时,应当在格式控制字符串中输入‘%%’。
占位符前面可以选择添加辅助控制符,其中的几个辅助控制符及其含义:
1.%#:用于整型输出八进制和十六进制数据时,用于输出八进制和十六进制的前缀。
2. %md:m用于控制输出要输出数据的宽度。如果m的值大于数据的实际宽度,则需要在数据前面填充空格。如果数据的实际宽度大于m的值,则会输出实际的数据的宽度。
3. %-md: 表示输出的数据应该为左对齐(默认的对其方式为右对齐)
4. %0md :表示右对齐数据前面填充的不是空格,而是0(注意:左对齐方式不会填充0,但是会填充空格)。
5. %.2f:在输出浮点型数据时,用于控制小数部分的位数。在输出字符串类型时,用于输出前几个字符。
scanf("格式控制字符串",地址列表):用于从缓冲区读取数据并存放在对应的内存地址中。
格式控制字符串:占位符和其他字符。其中其他字符需要原样输入。而占位符用于以不同的形式来进行读取数据。比如%d ,表示以有符号十进制的格式来匹配数据进行输入。
scanf()输入结束的条件分为:
1.遇到非法字符。比如%d 在读取到字符a时,则匹配结束。
2.遇到空白符。空白符包括空格、制表符、换行符。(其中特殊的时%c,在%c匹配到空白符时,%c能够对空白符读取成功。为了保证%c能读取到正确的字符,则有两种办法实现。1.在格式控制字符串中,在%c前面加一个空白符可以使空白符匹配带匹配字符钱的多个空白符,比如 \n%c,待匹配的字符为 \t \n c,则\n可以匹配掉字符c前面的多个空白符,从而保证%c匹正确的匹配到字符c.2. %*c可以匹配单个数据项,但是不会将数据给到任何一个变量)
注意:printf()的返回值为输出字符的个数。
scanf()的返回值为正确读取的个数。