《C语言解惑》—— 2.5 回车键打乱scanf的阵脚

    xiaoxiao2023-09-17  150

    本节书摘来自华章出版社《C语言解惑》一 书中的第2章,第2.5节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    2.5 回车键打乱scanf的阵脚

    【例2.7】假设有如下程序。

    #include <stdio.h> void main() { char c1,c2,c3; int a,b,c; scanf("%d%d%d",&a,&b,&c); scanf("%c%c%c",&c1,&c2,&c3); printf("%d,%d,%d",a,b,c); printf("%c,%c,%c",c1,c2,c3); }

    当程序运行时,使用如下输入方式:12 34 56abc将得到什么输出结果?【分析】有人可能认为就是按照输入的样子输出两行信息,其实不然。第1行输入时,给变量a、b和c赋值。当回车时,这个回车被作为字符赋给变量c1,后面的字符ab分别赋给变量c2和c3,而输入的c变成多余的了。c1里是回车符,所以程序输出为12,34,56,a,b如果输入“12 34 56abc”,则输出“12,34,56a,b,c”。这等效于如下输入方式:12 3456abc由此可见,为scanf语句赋值时,也要具体问题具体分析,避免乱用回车键。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)