江阴做网站的公司,备案网站忘记密码,网站都有什么类型,邯郸网站建设地方C语言——输入输出 输入输出函数的类型getcharputcharprintf占位符的分类 scanf 什么是输入输出呢#xff1f; 所谓输入输出是以计算机为主机而言的#xff0c;往内存中输入数据为输入#xff0c;反之从内存中输出数据为输出。 输入输出的功能 C语言本身是不提供输入输出功能… C语言——输入输出 输入输出函数的类型getcharputcharprintf占位符的分类 scanf 什么是输入输出呢 所谓输入输出是以计算机为主机而言的往内存中输入数据为输入反之从内存中输出数据为输出。 输入输出的功能 C语言本身是不提供输入输出功能的我们使用的是C语言库函数提供的标准输入输出函数C语言函数库供的标准输入输出函数
输入输出函数的类型
输入输出的分类有很多下面主要讲述以下三种 1、getchar/putchar用于操作单个字符 2、gets/puts用于操作字符串 3、scanf/printf格式化的输入和输出 需要注意的是在使用这些函数的时候需要包含头文件#include stdio.h
getchar
功能是从键盘上获取一个字符 函数原型为int getcahr(void); 由函数原型可以知道getchar函数的形式参数为空也就是在使用这个参数是不用传参返回值为int类型意思是返回获取到的字符的ASCII码值简单用法如下
#include stdio.hint main()
{int ret 0;ret getchar();printf(%c %d, ret, ret);return 0;
}程序输出从键盘上获取到的字符的字符原型和它对应的ASCII码值
putchar
功能是输出一个字符 函数原型int putchar(int c) 其参数表示要输出的字符返回值会有两种情况1、如果成功输出就返回成功输出的字符的ASCII码值2、如果失败了就返回-1 用法其实很简单把你想要输出的字符当作参数传给putchar(),它就会在屏幕上输出你传入的字符不过一次性只能输出一个字符即使你传进多个字符它也只会识别第一个字符并输出如果想输出多个字符就只能多次调用
printf
printf()函数是格式化输出函数它的函数原型为 int printf(const *format, …) 其中形参的…代表的意思是可变参数 printf的一般形式为 printf(“格式控制字符串” 输出参数列表); 格式控制字符串包括 1、普通字符对于普通字符会原样输出 2、占位符比如说%d占位符用于匹配后面的输出参数
占位符的分类
整形 %d输出参数转换为有符号的十进制形式 %u输出参数转换为无符号的十进制形式 %o输出参数转换为八进制的形式 %x输出参数转换为十六进制的形式 %X输出参数转换为十六进制的形式但是十六进制的a,b,c,d,e,f输出时都变成大写包括0x中的x也要大写 浮点型 %f输出参数转换为十进制形式的小数形式输出时默认保留六位小数不够就补零 %e输出参数转换为科学计数的形式输出%E输出是e变成大写 %g这是以一种更简洁的方式输出同时会去掉无意义的0%g输出时并不一定会按照我们所期望的形式输出所以在使用时需要进行测试 字符型 %c:输出参数转换为字符形式输出 %s输出参数转换为字符串形式输出
占位符还可以配合辅助控制符来使用那么辅助控制字符有哪些呢 #——可以用于打印进制的前缀例如%#x可以用于打印十六进制的前缀%#o可以用于打印十六进制的前缀等等 mm为数字——表示要输出的字符所占的宽度如果数据本身的宽度 m 此时按照实际宽度输出 如果数据本身的宽度 m 此时按照m宽度输出空出来的位置会填空格 输出的字符默认会按照右对齐如果想要输出的字符按照左对齐可以使用 -m表示按照指定宽度输出且输出的字符按照左对齐 0m表示多出来的位置用0来填充而不是空格 .n其中n表示数字常见用法 %f中%.nf表示输出结果保留n为小数 %e中%.ne表示科学计数法的小数部分保留n为小数 %s中%.ns表示保留字符串中的前n个字符 l用于long类型数据的输出 ll用于long long类型数据的输出 h输出的数据所占的字节数为原来的二分之一 hh输出的数据所占的字节数为原来的四分之一 注意占位符的输出对应关系都是一一对应的。
scanf
一般格式scanf(“格式控制字符串”地址表列) 例如
scanf(a %d, a);scanf中的格式控制字符串也包含普通字符和占位符普通字符需要用户原样输入而占位符和peintf()函数相似如果scanf()中包含普通字符因为输入时每次都要输出普通字符很麻烦所以在scanf的格式控制字符串中尽量不出现普通字符一般只写占位符 scanf()使用的过程中需要注意的问题 1、scanf的地址列表中一定要为有效的地址否则编译时就会发生段错误原因是访问到了不能访问的空间 为什么要设置地址列表呢 我的理解是scanf在读数据的时候会根据占位符识别输入的数据然后进行匹配如果数据合法就把数据读进对应的地址参数所指向的内存空间直到满足匹配结束条件满足位置这样在后面调用的时候直接使用就可以因为相应变量的空间中已经存放这scanf读取的数据 需要注意的是读取的时候的匹配结束条件遇到非法字符占位符对应的数据类型不包含的字符匹配结束遇到空白字符空格、回车、tab匹配结束超过指定的宽度匹配结束匹配的结束是这样的scanf逐个识别输入的数据符合占位符对应的类型的数据就放进对应变量地址的空间如果遇到非法字符、空白字符或者超过指定的宽度就进入下一个占位符的匹配 典型错误
char a, b;
scanf(%c%c, a, b);
printf(%d %d, a, b);上述程序在键盘输入abscanf就会给第一个占位符匹配数据由于%c和%c之间没有结束符且ab均满足第一个%c的匹配要求所以ab会都被读进a中ab的后面是\n第一个匹配结束第二个%c开始匹配识别到为\n匹配结束但在输出是由于a为cahr类型的数据所以只输出a对应的ASCII码值b仍在内存中放着而b会输出随机数。
辅助控制字符 %d m表示数据宽度即输入数据的宽度 %lf //输入的时候 这里要做到精确匹配 %f用于float类型数据的输入 %lf用于double 类型数据的输入 %Lf用于long double类型数据的输入 %ld用于long double类型数据的输入 %lld用于long long类型数据的输入