C语言 第四章 基本输入/输出

本文详细介绍了C语言中的格式化输入/输出,包括printf和scanf函数的使用。通过实例演示了如何控制整数、实数、字符和字符串的输出格式,并讲解了非格式化输入getchar、getc等函数的运用。同时,提到了清除键盘缓冲区的方法。此外,还强调了不正确的格式设置可能对输出的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 基本输入/输出

4.1 格式化输出printf

  1. 整数的输出
    % [-] / [+] / [.] / [width] / [l] / [h]

    [-]:表示输出的数据左对齐,默认右对齐
    [+]:表示加上+号
    [width]:无符号整数,表示输出整数的最小域宽(占屏幕的多少格)
    [.] :无符号整数,表示至少要输出多少位,如果整数的位数小于这个数,需要在左边的空位上补0
    [l]:输出长整型数据
    [h]:输出短整型数据

    int a = 123;
    long L = 65537;
    printf("a=%6d-----(a=%%d)\n",a);
    //输出:a=   123-----(a=%6d)
    printf("a=%-6d-----(a=%%-6d)\n",a);
    //输出:a=123   -----(a=%-6d)
    printf("a=%-06d-----(a=%%-06d)\n",a);
    //输出:a=123   -----(a=%-06d)
    printf("a=%+06d-----(a=%%+06d)\n",a);
    //输出:a=+00123-----(a=%+06d)
    printf("a=%+6.6d----(a=%%+6.6d)\n",a);
    //输出:a=+000123----(a=%+6.6d)
    printf("a=%-6.5d-----(a=%%-6.5d)\n",a);
    //输出:a=00123 -----(a=%-6.5d)
    printf("a=%6.4d-----(a=%%6.4d)\n",a);
    //输出:a=  0123-----(a=%6.4d)
    prinf("%hd",L);
    //输出:1 ,65537的十六进制:0x0001 0001 ,取低十六位,则为1
  1. 实数的输出

    % [.] / [#] / [width] / [.] / [l|L]

[#] :必须输出小数点,如果是别的进制,如八进制,需要把前面的0输出来
[.] :规定输出实数时,小数部分的位数
[l] :输出double型数据;默认也是输出double数据
[L] :输出long double 型数据

  1. 字符和字符串的输出
    输出字符: %[-] / [0] / [width] c
    输出字符串: %[-] / [0] / [width] /[.] s

[.] :表示只输出字符串的前多少个字符

注意:

1:如果上一个不正常的输出会影响到下一个表达式的正常输出
如:printf(“a = %d, b = %d\n”,f,b) // float f =2; int a =10,b=100;
输出的f用了float但是用了%d,则不会正常输出2.000000
后面的b会被影响输出

4.2 格式化输入scanf

scanf(“格式控制字符串”,变量地址);
&只能作用于变量,不能作用于表达式,因为表达式不对应具体的内存单元,没有地址,只有值

  1. 控制符
    * :为抑制符,输入的数据不会复制给相应的变量
  2. 注意:

    使用格式控制符%c输入耽搁字符时候,空格和转义字符均作为有效字符被输入
    scanf("%2d%*2d%3d",&num1,&num2); // 输入123456789
    printf(“num1=%d,num2=%d\n”,num1,num2); //读取12赋值给num1;读取34舍掉;读取567赋值给num2. 输出结果:num1=12 , num2=567

4.3 字符数据的非格式化输入和输出

  1. 字符数据的非格式化输入
      1. getchar
        返回值是用户输入的第一个字符
        该函数没有参数,有一个int型返回值
        调用该函数的时候,程序就等待用户按键
      1. getc
        int getc (FILE *stream);
        从流文件stream中读取一个字符信息,当流文件时stdin时,和getchar完全相同
      1. getche
        int getche(void);
        和getchar相同,唯一差别是:getche直接从键盘获取键值,不等待用户按回车键,只要用户按,则getche直接返回用户按键的ASCII码,同时用户输入的字符回显在屏幕上。
      1. getch
        和getche功能相同,唯一差别为:getche回显输入的字符,但是getch不回显输入的字符。
  1. 字符数据的非格式化输出

      1. putchar(int c)
        在显示器上输出的字符c
      1. putc(int c, FILE * stream)
        将字符输出到流文件stream,如果流文件为stdout,功能与putchar相同
      1. puts(char * string)
        将字符串string的所有字符输出到屏幕上,输出时将自动回车换行
  2. 清除键盘缓冲区
    fflush

4.4 碎小知识点

  1. 格式转换符中,除了X、E、G以外,其他均为小写字符。
  2. 算法的描述方法:自然语言描述、伪代码、流程图、N-S图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suiuko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值