C语言基础(7)------输入输出

本文介绍了C语言中的输入输出函数,如printf用于格式化输出,包括各种格式控制符如%d,%o,%x等,以及对输出列表的处理。同时,文章讲解了scanf用于格式化输入,以及字符和字符串的输入输出函数getchar,putchar,gets,puts。还提到了输入输出的缓冲区机制和一些注意事项。

5.输入输出

  • c语言本身不提供输入输出,所有的输入输出都是通过调用标准库函数实现---》#include <stdio.h>

5.1 printf --格式化输出

printf("字符串");
printf("格式控制字符串",输出列表);
格式控制字符串:格式控制符 + 其它字符
    printf("%d\n",10);
    格式控制符:
            %d -- 十进制有符号整数 -- 4个字节
            %ld -- 输出十进制长整型数据
            %md -- 输出的数据占m(整数)域宽 默认右对齐
            %-md -- 输出的数据占m(整数)域宽 左对齐
            %0md -- 输出的数据占m(整数)域宽 用0补齐空位 
            
            %o  --  输出八进制无符号整数 
            %#o --输出八进制无符号整数 (带前缀0)
            %x  -- 输出十六进制无符号整数
            %#x
            %u   -- 输出无符号整数
            
            %f  -- 输出浮点型数据 --默认保留6位有效数字,超过六位第七位四舍五入
            %.nf -- 输出浮点型数据 --精确到小数点后第n位 -- n是一个整数
            %mf --- 
            %m.nf --
            %lf
            %e  -- 按照指数形式输出浮点型数据
             
            %c -- 输出单个字符
            %s -- 输出字符串 -- 字符串的首地址
            
            %% -- 输出%
            %p -- 输出地址
        其他字符:按照原样输出
 输出列表:如果格式控制字符串里面有格式控制符,输出列表的数据要与格式控制字符串里的格式控制符从左到右一一对应
总结:函数调用时,参数需要从右到左依次入栈,在入栈时后++(a++)需要备份,出栈时有备份先打印备份,无备份打印最后真值。
栈:是一种先入后出的数据结构
缓冲区:是一段存储空间,一般用来暂存数据。
注意:printf并不是直接将数据输出到终端,而是先将数据写入输出缓冲区(stdout),当缓冲区中遇到\n或者程序结束时会将缓冲的数据刷新到终端。

练习1: int a = 10;

printf("%d %d %d %d\n",a++,++a,a++,++a);

a = 10备份真值
a++1314
++a13
a++1112
++a11

输出 13 14 11 14

练习2:int a = 10;

printf("%d %d %d %d",++a,a++,++a,a++);

备份真值
++a14
a++1213
++a12
a++1011

输出 14 12 14 10

5.2 scanf -- 格式化输入

scanf("格式控制字符串",地址列表);
格式控制字符串:格式控制符 + 其它字符
    格式控制符:
    %d --- 十进制有符号整数
    %f
    %lf
    %c --- 输入单个字符
    %s --- 输入字符串
    其它字符:原样输入
地址列表:从左到右与格式控制字符串里的格式一一对应。
    & :作为单目运算符,代表取地址(变量) ---  变量的首地址(低地址)
 注意1:在输入数值型数据时,空格、回车、TAB都算是非法字符(\n \t 空格不被捕获)
 注意2: 在输入字符型数据时,空格、回车、TAB都算是有效字符 ---脏字符
   char  str[20];

5.3 字符输入输出

  • getchar

    getchar();
    char ch =getchar();
    e.g.1:
    char ch = 0;
    getchar(ch);//error  报错
  • putchar

    putchar(字符);
    char ch = 'x';
    printf("%c\n",ch);
    putchar(ch);
    == putchar('x');

5.4 字符串输入输出

  • gets

    gets(字符数组的首地址);
    char str[20];
    gets(str);
  • puts

    puts(字符串的首地址);
    char str[] = "hello world";
    puts(str);
    puts("hello world");
    注意:puts函数会自动换行。

练习1:输入一个3位整数(100-999),输出个位、十位、百位。

int a = 0;
scanf("%d",&a);
printf("%d %d %d",a / 100,a / 10 % 10,a % 10);

练习2:输入一个整数,输出该整数的每一位。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值