c语言输入输出
1. 数据输出
c语言无I/O语句,I/O操作由函数实现:
#include <stdio.h>
1.1 字符输出函数:
格式:putchar(c)
参数:c为字符常量、变量或表达式
功能:把字符c输出到显示器上
返值:正常,为显示的代码值
#include <stdio.h> int main(int argc,char *argv[]) { int a=65; char ch='B'; putchar(a); putchar('\n'); putchar(ch); return 0; }
讯享网
打开帮助手册,发现putchar里面是int 类型的字符,int里面认为的是ASCII码值,为什么不是char类型的,因为char类型的变量是-128~127范围而ASCII码的是0~255。

1.2 格式输出函数
格式:printf(“格式控制串”,输出表)
功能:按指定格式向显示器输出数据
输出表:要输出的数据
格式控制串:包含两种信息
格式说明:%【修饰符】格式字符,用于指定输出格式
普通字符:原样输出
| 格式符 |
作用 |
| i,d |
十进制整数 |
| x,X |
十六进制无符号整数 |
| o |
八进制 |
| u |
无符号十进制整数 |
| c |
单一字符 |
| s |
字符串 |
| e,E |
指数形式浮点小数 |
| f |
小数形式浮点小数 |
| g |
e和f中较短的一种 |
| %% |
百分号本身 |
讯享网#include <stdio.h> int main(int argc,char *argv[]) { int a=254; char ch='A'; char s[]="adwdada"; float f1=567.12; printf("%d %x %o\n",a,a,a); printf("%c %d\n",ch,ch); printf("%s\n",s); printf("%f %e %g\n",f1,f1,f1); return 0; }

附加格式说明符:
| 修饰符 |
功能 |
| m |
输出数据域宽,数据长度 |
| .n |
对实数,指定小数点后位数(四舍五入) 对字符串。指定实际输出位数 |
| - |
输出数据在域内左对齐(缺省右对齐) |
| + |
指定在有符号数的正数前显示正号(+) |
| 0 |
输出数据时指定左面不使用的空位置自动填0 |
| # |
在八进制和十六进制前显示前导0,0x |
| | |
在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double |
#include <stdio.h> int main(int argc,char *argv[]) { int a=254; float f1=12.3456; char ch='a'; char s[]="Hello,World!"; printf("%15s\n%15.5s\n%2.5s\n%.5s\n",s,s,s,s); printf("%8d\n%2d\n",a,a); printf("%9f\n%9.3f\n%.2f\n",f1,f1,f1); printf("ch=%5c\n",ch); printf("%08d\n%0+8d\n",a,a); return 0; }

1.3 字符串输出函数puts
格式:int puts(const char*s)
功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以‘\0’结束
讯享网#include <stdio.h> int main(int argc,char *argv[]) { char s[5]; gets(s); printf("s:%s",s); printf("\n"); puts("$$$$"); puts(s); return 0; }
数组在后面会有讲解 ,也可以自己先在网上查一下定义

2. 数据输入
2.1字符输入函数getchar:
格式:getchar()

功能:从键盘读一字符
返值:正常,返回读取的代码值;出错或结束键盘输入,返回(Ctrl+d)。
注意: 输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇非法输入 遇宽度结束
#include <stdio.h> int main(int argc,char *argv[]) { int ch; printf(">"); ch=getchar(); putchar(ch); putchar('\n'); return 0; }

2.2格式输出函数:
格式:scanf(“格式控制串”,地址表)
功能:按指定格式从键盘读入数据,存入地址表指定
存储单元中,并按回车键结束
返值:正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符&
| 格式符 |
作用 |
| i,d |
十进制整数 |
| x,X |
十六进制无符号整数 |
| o |
八进制 |
| u |
无符号十进制整数 |
| c |
单一字符 |
| s |
字符串 |
| e |
指数形式浮点小数 |
| f |
小数形式浮点小数 |
讯享网#include <stdio.h> int main(int argc,char *argv[]) { int a; printf("请输入:"); scanf("%x",&a); printf("%d\n",a); return 0; }
注意这里我输入的是十六进制的数,输出的是十进制的数,不懂的可以看看之前的文章怎么转换或者在网上搜

scanf函数支持的格式说明符可以带以下修饰符
| 修饰符 |
功能 |
| h |
用于d,o,x前,指定输出为short型整数 |
| l |
用于d,o,x前,指定输出为long型整数 用于e,f前,指定输出为double型整数 |
| m |
指定输入数宽度,遇空格或不可转换字符结束 |
| * |
抑制符,指定指定输入项读入后不赋给变量 |
#include <stdio.h> int main(int argc,char *argv[]) { int a,b,c; scanf("%4d%2d%2d",&a,&b,&c); printf("%d,%d,%d\n",a,b,c); scanf("%4d%*2d%2d",&a,&c); printf("%d,%d\n",a,c); return 0; }
抑制符可以理解为你输入的值被吞掉了。

用“%c”格式符时,空格和转义符作为有效字符输入
讯享网#include <stdio.h> int main(int argc,char *argv[]) { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%d,%d,%d\n",a,b,c); return 0; }

总结,输入数据时,遇到以下情况认为该数据结束:
遇空格,Tab键,回车键
遇到非法输入
遇到宽度结束
2.3 输入函数的“垃圾”

为什么只输出了一个值,但是最后ch也有值,这是因为当输入5之后,按下回车键本意是按下回车键结束输入,但是这个回车键被当成了字符输入值。这个就叫输入函数的“垃圾”。
解决方法:加入getchar();

解决方法:用格式串中空格或“%*c”来“吃掉”

#include <stdio.h> int main(int argc, const char *argv[]) { char a; char b; char c; //回收垃圾方式的三种方式 //方法1:空格、若干空格、tab、\n #if 0 scanf("%c %c %c", &a, &b, &c); #endif //方法2:%*c 回收任何一个字符, tab 键 ,空格键,\n #if 0 //%*c 回收任何一个字符, tab 键 ,空格键,\n scanf("%c%*c%c", &a, &b); #endif //方法3:getchar()回收 #if 0 scanf("%c", &a); getchar(); //吃一个字符 scanf("%c", &b); #endif printf("a=%c b=%c c=%c\n", a, b, c); return 0; }
注意:在第一种方法中,scanf中的格式控制串中你可以插入几个空格或者一个空格隔开,当输入数据时你不管数据之间空了几个都算做一个。

2.4字符串输入函数gets
格式:char*gets(char*s)
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’
说明1:输入串长度应小于字符数组维数
说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束标志。
讯享网#include <stdio.h> int main(int argc,char *argv[]) { char s[5]; gets(s); printf("%s\n",s); return 0; }

注意:因为数组的大小限制(数组会在后面有讲解,也可以自行在网上了解定义)如果输出超过了四个字符,就不行。(初学者,如果有错误欢迎各位指正,一起学习一起进步)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/13441.html