C语言从入门到精通第7天(scanf、printf、getchar函数的使用)

scanf、printf、getchar函数的使用

printf函数

在C语言中使用printf函数进行格式化的输出,它是一个可变的参数函数,参数的个数不定。在前面我们已经学习了各个类型的打印格式,这里就对最常见的输出格式进行介绍。

%d:表示对整数进行输出
%c:表示对字符型的进行输出
%p:表示对指针类型进行输出
%s:表示对字符串类型进行输出
%f:表示对浮点型进行输出

具体的我们通过代码进行说明:

int main(){
    int a = 110;
    char b = 'c';
    float c = 5.2;
    int *p = &a;
    // 字符串最后一个为'\0'
    char arr[5] = {'c','b','\0','d'};

    printf("%d\n",a);
    printf("%c\n",b);
    printf("%f\n",c);
    //  打印指针的地址
    printf("%p\n",p);
    printf("%s",&arr);
    return 0;
}

以上字符串和指针类型的数据后面会进行详细的讲解这里就不过多的说明,只需要知道有这一种输出格式即可。

有时候对于浮点型我们希望输出的格式保留小数位,或者输出的语句进行对其,这时候我们就得进行相应的格式变换。例如:

int main(){
    float a = 4.55555;

    // 我们希望浮点数输出10位并保留小数点后3位
    printf("%10.3f",a);

    return 0;
}

它的输出结果为:

在这里插入图片描述

此时我们发现它的前面有空格5个,这是因为我们要求函数输出10位数,小数点也占位数,前面的空格位数加上4.556五位刚好是十位。

当然这种格式化输出还有很多,这里就对它的格式进行说明一下:”%【+或者-数字】【输出长度】.【保留位数】【类型】“。用【】括起来的都是可选的。

+或-数字 表示右对齐和左对齐多少位,如:”%+3d“表示右对齐3位。
输出长度:表示输出位数的长度,不够的加空格,长的删掉。
保留位数:表示保留小数点后几位。
类型:表示输出的数据类型。

scanf函数

scanf函数是C语言当中的输入函数,它的作用是读取我们从键盘上输入字符的地址。然后将以给定的格式进行输入。格式如下:scanf("%d",&a),在键盘上输入一个整数到缓存区,然后scanf从缓存区中获取输入的字符,直至缓存区中为空。

代码如下:

int main(){

    int x;
    scanf("%d",&x);

    char y;
    scanf("%c", &y);

    return 0;
}

getchar函数

用于获取一个可用的字符,并返回。

例如:

int main(){

    char ch;
    ch = getchar();
    printf("%c\n", ch);
}

运行时,会让你输入一个字符,getchar()函数进行获取并进行返回。

下面我们来看一个更高级的用法,当scanf函数与getchar联用时会有什么妙处:

在这里插入图片描述

我们发现只有两个函数进行输出,这是因为scanf是获取缓冲区中的字符,当我们多个scanf联用时就得特别的注意。

注意: 多个scanf函数联用时,如果scanf运行前是除了输入字符型其他的类型,则会将缓冲区中的字符全部清除;如果运行前是字符型的输入,则缓冲区中不会进行清楚,当我们按下回车键时,scanf会自定的捕获这个回车键,从而不会进行下一步的输出了。

如果我们要使这三个scanf函数全部都运行,应该怎么去处理呢?这时我们的getchar函数就该发挥作用,让getchar函数去捕获输入的这个回车字符,从而使他进行下一步的运行。代码如下:

int main(){

    int x;
    scanf("%d",&x);

    char y;
    scanf("%c", &y);

    // 用于捕获空格
    getchar();
    int a, b;
    // 进行多个值的获取,输入格式必须更自己定义的格式一致
    // 输入一个数时加一个空格在输入一个数
    scanf("%d %d", &a, &b);

    return 0;
}

他的输出为:

在这里插入图片描述

这时发现我们的3个scanf函数都可运行了,上面的问题便解决了。这里特别要注意的是:一个scanf在进行多个值的输入时,必须按照自己定义的格式进行输入,并且在格式中不能包括转义字符,如'\n'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ProgramStack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值