用scanf输入字符型变量的常见错误(新手篇)

  • Post author:
  • Post category:其他


例题

T:给定一个长方形的长和宽(均为不小于1的正整数),以及一个可显示字符,用该字符在屏幕上画出该长方形(空心)

输入要求 :由多行组成,每一个包括两个整数和一个字符,分别表示长,宽和填充字符

输出要求 :   对每一行输出一个长方形

  
样例输入 : 


5 2 @



40 20 *

样例输出 :

@@@@@

@@@@@


****************************************



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



*                                                     *



****************************************

本篇针对于初学c语言的小白解决困惑;

相信有很多人在通学字符输入c = getchar()前就接触了scanf循环输入字符的问题;

下面有一个无限次数循环输入字符型变量的病句 :



while(


scanf


(


"%d %d %c",&a,&b,&c)!=EOF)


对于这个句子有很多种解决办法;




answer1

.首要的是老师都会教的  getchar(); 放入循环;



while


(


scanf


(


"%d %d %c"


,&a,&b,&c)!=EOF){



此处放个

getchar();


getchar();可以读入一个字母数字或者空格回车而不进行任何操作,可以中和


每次输入一组数据后的回车换行同时带来的回车输入;



answer2

:这里我要提的是对scanf输入进行改进;



scanf


(


"%d %d %c"




,&a,&b,&c)

中输入类型之间的空格不止可以使我们可以




a  b  c 一样输入字符;


这里的空格还能中和回车键输入;


scanf


(


" %d %d %c"


,&a,&b,&c);


当在第一个输入类型前加空格“ ”,就能规避打字getchar的效率低下;


ps:如果是有限循环输入,可以直接


scanf


(


"%d %d %c"


,&a,&b,&c),这里规避getchar使用如下;


a b ca b ca 。。。。。。将每组最后一个数据与下一组第一个数据在一起打出;


希望这部帖子能帮助你敲代码的争分夺秒。



版权声明:本文为sorrylk_maker原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。