基于Linux的C语言编程Day3
前提1输入输出是以计算机主机为主体而言的。2C语言本身不提供输入输出语句输入和输出操作是由C函数库中的函数来实现的。一. 字符数据的输入输出 putchar getchar1 . 用Linux查看putchar手册 命令为man putchar / getchar 打开后会出现以下内容PUTS(3) Linux Programmers Manual PUTS(3)NAME//函数名及功能简短说明fputc, fputs, putc, putchar, puts - output of characters and stringsSYNOPSIS// 函数所需要的头文件以及函数原型#include stdio.hint fputc(int c, FILE *stream);int fputs(const char *s, FILE *stream);int putc(int c, FILE *stream);int putchar(int c);int puts(const char *s);DESCRIPTION//描述函数使用细节fputc() writes the character c, cast to an unsigned char, to stream.fputs() writes the string s to stream, without its terminating nullbyte (\0).putc() is equivalent to fputc() except that it may be implemented as amacro which evaluates stream more than once.putchar(c) is equivalent to putc(c, stdout).puts() writes the string s and a trailing newline to stdout.Calls to the functions described here can be mixed with each other andwith calls to other output functions from the stdio library for thesame output stream.For nonlocking counterparts, see unlocked_stdio(3).RETURN VALUE//返回值fputc(), putc() and putchar() return the character written as anunsigned char cast to an int or EOF on error.puts() and fputs() return a nonnegative number on success, or EOF onerror.(1) putchar函数int putchar ( int c )功能是向终端输出一个字符其形式一般为putchar (c)参数c表示要输出的字符返回值 : 返回要输出的字符ASCII编码用法 #includestdio.h int main() { char a A; putchar(a); return 0; }运行结果从图中可以看出输出结果很紧凑没有换行。要想换行代码就要改为#includestdio.hint main(){char a A;putchar(a);putchar(\n); // 换行return 0;}2getchar函数int getchar ( void ) //getchar 只能接收一个字符功能从终端输入一个字符参数void 表示不需要传参数返回值 返回读到的字符 ASCII编码值 用法 #includestdio.h int main() { char a; a getchar(); putchar (a); putchat(\n); return 0; }结果 二 格式输入与输出 printf scanf1 .printf 函数int printf ( const char *format , ... ); 一般格式为 printf ( 格式控制 输出列表 )功能 向终端输出若干个任意类型的数据format : 参数 格式化字符串... 可变参数返回值 成功时返回打印了的字符1普通字符 -------------------------原样输出例 printf (hello ,world );2占位字符-------------------------把对应数据转换为指定的占位符i整型%d----------------------------------------将数据转换为有符号的十进制%md--------------------------------------m为指定的输出字段的宽度m实际宽度以实际宽度输出m实际宽度数据默认右对齐也可以右对齐需在m前加 - 左边补空格补0需在m前加 0%#d--------------------------------------表示输出数据对应的前缀字符%ld---------------------------------------输出长整型数据%Ld--------------------------------------输出为long long型的数据%*d--------------------------------------表示跳过它指定的列数例 scanf(%2d%*3d%2d,a,b); 输入12 345 67系统会将12赋值给a%*3d表示读入三位整数但不赋值任何变量再将67赋值给b也就是说345会被跳过%u---------------------------------------将数据转换为无符号的十进制%o---------------------------------------将数据转换为八进制%x---------------------------------------将数据转换为十六进制%X--------------------------------------将数据转换为十六进制输出结果中的字母都转换为大写ii浮点型%f---------------------------------------将数据转换为十进制形式的小数默认保留六位小数%.nf(n为整数)------------------------表示保留前n位小数%m.nf----------------------------------指定输出的数据共占m列保留n位小数%e--------------------------------------将数据转换为科学计数法默认保留六位小数%g--------------------------------------将数据以一种更简洁的方式输出消除无意义的0iii字符型%c--------------------------------------将数据转换为对应字符形式%s--------------------------------------将数据输出为一串字符%.ns-----------------------------------将数据保留结果前n位注 占位符和输出参数要一一对应2 .scanf 函数int scanf ( const char *format , ... ) scanf ( 格式控制 地址列表 ) scanf(%d%d,a,b);format : 参数格式化字符串... : 可变参数 要地址列表返回值 表示成功匹配到数据项i整型%d----------------------------------------将数据转换为有符号的十进制%md--------------------------------------m为指定的输入字段的宽度m实际宽度以实际宽度输出m实际宽度数据默认右对齐也可以右对齐需在m前加 - 左边补空格补0需在m前加 0%#d--------------------------------------表示输入数据对应的前缀字符%ld---------------------------------------输入长整型数据%Ld--------------------------------------输入为long long型的数据%u---------------------------------------输入无符号的十进制%o---------------------------------------输入为八进制%x---------------------------------------输入为十六进制%X--------------------------------------输入十六进制输入结果中的字母都转换为大写ii浮点型%f---------------------------------------输入十进制形式的小数默认保留六位小数%.nf(n为整数)------------------------表示保留前n位小数%m.nf----------------------------------指定输入的数据共占m列保留n位小数%e--------------------------------------输入科学计数法默认保留六位小数%g--------------------------------------简洁的方式输入消除无意义的0iii字符型%c--------------------------------------输入对应字符形式%s--------------------------------------将数据输入为一串字符%.ns-----------------------------------将数据保留结果前n位注 1占位符和地址参数要一一对应2scanf的格式控制字符可以输入普通字符但是不建议3输入多个数据时默认用空格 Enter Tab作为分隔符4计算机中0号地址一般不能直接访问会出现segmentation fault (core dumped) 段错误5scanf匹配结束条件遇空白符 遇非法字符 达到指定宽度如果设置宽度了的话6scanf输入时占位符与类型要严格匹配7scanf处理字符数据时空白符也是字符