微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在%c之前需要空格才能使代码正常工作?

如何解决为什么在%c之前需要空格才能使代码正常工作?

这真的很有趣

错误代码

#include <stdio.h>

int main( )
{
    char another;
    int num;
    do
    {
        printf("Enter a number: ");
        scanf("%d",&num);
            
        printf("\nWant to enter another number y/n ");
        scanf("%c",&another);
    }while(another == 'y');

    return 0;
}

输出输入数字:23

要输入另一个数字y / n C:\ Users \ Shivam Singh \ Documents \ Let's C \ From Book \ Ch3>

要区分错误代码和正确代码,请查看%c。两种代码的唯一区别是正确代码中%c之前的空格。

正确的代码

#include <stdio.h>

int main( )
{
    char another;
    int num;
    do
    {
        printf("Enter a number: ");
        scanf("%d",&num);
            
        printf("\nWant to enter another number y/n ");
        scanf(" %c",&another);
    }while(another == 'y');

    return 0;
}

输出输入数字:23

要输入另一个数字y / n y 输入数字:54

要输入另一个数字y / n n

解决方法

scanf()需要使用空格来消耗前stdin留在scanf()中的待处理换行符,前一个读取数字并停止使用最后一位数字后的字符。如果没有此空间,scanf()会将下一个字节存储到another中,很可能是用户键入以提交数字的换行符。

请注意,您还应该测试scanf()的返回值,以检测无效的输入或文件的提前结束。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。