04-输入输出
2023-05-19 04:58:19
来源博客园 2023-05-19 04:58:19
(资料图)
输入输出1.字符输出函数c语言中没有I/O语句,I/O操作由函数实现
#include
1.1 字符输出函数 - putchar格式:putchar(c)参数:c为字符常量\变量\表达式功能:把字符c输出到显示器上返回值:正常,为显示的代码值ASCII码
#include int main(){ int a = 65; char ch = "B"; putchar(a); // int值 -- 显示A putchar("\n"); // 字符 -- 显示换行 putchar(ch); // 字符 -- 显示B return 0;}
1.2 格式输出函数printf("格式控制串",输出表)功能:按照指定格式向显示器输出数据输出表:要输出的数据格式控制串:包含两种信息 格式说明:%[修饰符]格式字符,用于指定输出的格式 普通字符:原样输出
#include int main(){ int a = 255; char ch = "C"; char s[] = "sdfsdf"; float fl = 567.534; printf("%d %o %x\n",a,a,a); printf("%c %d\n",ch,ch); // %c 打印字符 %d 打印字符ascii码值 printf("%s\n",s); printf("%f %e %g\n",fl,fl,fl); printf("%%"); // 打印一个% return 0;}
1.3 附加格式说明符m.nint a = 1234;float b = 123.456;char ch = "a";printf("%8d,%2d\n",a,a); // 8d指的是数据位宽m ,不够左侧补空格 // 位宽 < 实际位数,原样输出 // printf("%8f,%8.1f,%.2f\n",f,f); // .n表示保留小数 printf("%3c",ch); // 补充空格char s[] = "Hello,World!";printf("%15s\n",s); // 字符串打印15个字符长度,不够左侧补空格printf("%15.5s\n",s); // 要打印15个,打印5个字符printf("%2.5s\n",s); // 2 < 12(实际长度,原样输出),打印5个字符 printf(".5s\n",s); //
0 + 0 -- 用0填充+ -- 整数显示加号int a = 1234;float b = 123.456;char ch = "a";printf("%08d %0+8d\n",a); // 8d指的是数据位宽m ,不够左侧补0 // + 表示正数的时候添加加号 printf(%08.1f\n",f); // printf("%3c",ch); // 补充空格
2.字符输入函数2.1 字符输入函数 -- getchar()getchar() --格式:getchar() --功能:从键盘读取一个字符 --返回值:正常,返回读取的ASCII码值;出错或者结束输入,返回-1(用int接收) ctrl d返回-1,表示结束输入
#include int main(){ int ch; printf("input:") ch = getchar(); putchar(ch); // 输入什么字符显示什么字符 putchar("\n"); printf("ch = %d\n",ch); // 结束键盘输入的时候显示-1 return 0;}
2.2 格式输入函数 scanfscanf("格式控制串,地址表")功能:按照指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束 格式控制串可以表示输入的是多少进制的数返回值:正常,返回输入数据的个数地址表:变量的地址,常用取地址运算符&
#include int main(){ int ch,n; printf("Enter a character:"); n = scanf("%d",&ch); // 输入65 printf("%d\n",ch); // 打印65 printf("n = %d\n",n); // n小于输入变量的个数表示输入失败 return 0;}
修饰符
#include int main(){ int ch,n; // long m; int y,m,d printf("Enter a character:"); n = scanf("%x %ld",&ch,&m); // 输入 21 5 // printf("n = %d\n, %d %ld",n,ch,m); //2 33 5 scanf("%4d%2d%2d",&y,&m,&d); // 20221213 // 4d 表示位宽 -- 自动将输入的前四位给y printf("%d %d %\n",y,m,d);// 2022 12 13 return 0;}
* -- 抑制符,输入的值不赋值给变量scanf("%2d%*3d%2d",&a,&b); // 1234567 a = 12 b = 67 中间取到值不给变量
// 字符型变量连续输入#include int main(){ char y,m,d; scanf("%c%c%c".&y,&m,&d); printf("%d:%d:%d\n",y,m,d); // 输入abc 打印97:98:99 // a b c 97:32:32 // 字符型变量在进行连续输入的时候,空格和转义字符是有效字符 // 数值型进行连续输入的时候空格不是有效字符 return 0;}
总结:整型数据输入的时候,遇到空格\会出\TAB都认为是数据结束,此外,非法输入(整型输入字母)和遇到宽度也表示结束
scanf("%d%c%f",&a,&b,&c);输入:1234a123o.26a = 1234 b = "a" c = 123
3.输入函数留下的"垃圾"int a ;char x;printf(">");scanf("%d",&a);scanf("%c",&x);printf("%d:%c:%d\n",a,x,x); // 输入5,然后回车,打印 5:回车:10 // 回车会赋值个x
// 方法1:使用getchar清除int x;char ch;scanf("%d",&x);getchar()ch = getchar();printf("x = %d,ch = %d\n",x,ch);// 方法2:使用空格%c或者%*c接收字符型数据int x;char ch;scanf("%d",&x);// scanf(" %c",&ch);scanf("%*c",ch);printf("x = %d,ch = %d\n");
4.字符串输入输出函数4.1 字符串输入函数-getsgets 格式:char * gets(char *s) 功能:从键盘输入一个以回车结束的字符串放入字符数组中,并且自动加入"\0" 说明1:输入串长度应小于字符数组长度 说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志
char s[5]; // 定义长度为5的字符数组用于存储字符串,只能存储4个gets(s); // 输入字符串printf("%s\n",s) // 打印字符串// 用户输入字符串的长度超过字符数组的长度,会报错// 这个函数是有风险的
char s[5];scanf("%s",s); // 空格会作为分割符结束,可以用循环,使用%c存储空格printf("%s\n",s);
4.2 字符串输出函数-putschar s[5];gets(s); printf("s:%s",s); // printf() 默认不换行printf("***\n");puts("$$$$"); // 自动换行puts(s);
puts 格式:int puts(const char *s) 功能:向显示器输出字符串(输出完,换行) 说明:字符数组必须以"\0"结束
#include #include int main(){ int a,b,c; int delt; float result1,result2; scanf("%d%d%d",a,b,c); delt = b*b-4*a*c; result1 = [(-b)+sqrt(delt)]/(2*a); result2 = [(-b)-sqrt(delt)]/(2*a); printf("result1 = %f,result2 = %f\n",result1,result2); return 0;}