飞鱼的成长

 

因本人不再做技术,

这个blog将不再连载技术文章,

只作为心情点滴的记录,

想学技术的请绕道,谢谢!

联系方式:

feiyu_lili@163.com


时 间 记 忆
«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031

最 新 评 论
回复:什么都是错,唯有行动才是真道理
回复:我有个梦想
回复:自动词和他动词的分类比较[转][小
回复:Binaryluo 的  [网络编
回复:如何实现人生价值(转)
回复:工作有感
回复:如何实现人生价值(转)
回复:如何实现人生价值(转)
回复:如何实现人生价值(转)
回复:我有个梦想

最 新 日 志
我有个梦想
工作有感
我的人生路该怎么走
什么都是错,唯有行动才是真道理
想家的孩子
解压的方法(转)
关于我的一些调节心态的方法(转)
具体应该怎样同懒惰性做斗争?(转)
如何实现人生价值(转)
希望这里的房子能早点租掉

最 新 留 言
签写新留言

日语自动,他动
化妆了 :)
步伐当然记得你啦(不能回复,只能另起炉灶
好久不见了。。。
睡觉的问题
………………
~~~~~
。。。。
还以为你去日本了来
那里去了???

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

凡弟のBlog

祺弟のBlog

臭釉のBlog

 

blog名称:飞鱼的成长
日志总数:120
评论数量:488
留言数量:18
访问次数:1043294
建立时间:2006年2月27日
 
 
 
[c语言]字符输入/输出和输入确认[C primer plus读书笔记]上
[ 2006/3/13 13:51:44 | By: feiyu_lili ]
 
重定向 一:输入定向 二:输出定向 三:组合重定向   创建一个更友好的用户界面: /* showchar1.c -- program with a BIG I/O problem */ int main(void) {     int ch;             /* character to be printed    */     int rows, cols;     /* number of rows and columns */     printf("Enter a character and two integers:\n");     while ((ch = getchar()) != '\n')     {         scanf("%d %d", &rows, &cols);         display(ch, rows, cols);         printf("Enter another character and two integers;\n");         printf("Enter a newline to quit.\n");     }     printf("Bye.\n");          return 0; }   void display(char cr, int lines, int width) {     int row, col;       for (row = 1; row <= lines; row++)     {         for (col = 1; col <= width; col++)             putchar(cr);         putchar('\n');  /* end line and start a new one */     } } 500)this.width=500'> 这里输入了c 1 2一次循环以后就直接跳出了,原因与scanf()不同getchar()并不跳过换行符(还有空格,制表符),所以在输入c 1 2后面的换行符就被留在输入队列中,在下次循环的时候没有机会读取任何数据,这一个换行符由getchar()读出,负值给ch而ch为换行符正式终止循环条件。 所以就没有按照我们所想的退出程序。 下面是修改后的程序 /* showchar2.c -- prints characters in rows and columns */ #include <stdio.h> void display(char cr, int lines, int width); int main(void) {     int ch;             /* character to be printed      */     int rows, cols;     /* number of rows and columns   */     printf("Enter a character and two integers:\n");     while ((ch = getchar()) != '\n') //While语句使程序剔除scanf()输入后的所有字符,包括换行符。这样就让循环准备好读取下一//行开始的第一个字符。其中scanf()返回值不是2,就终止了该程序。       {         if (scanf("%d %d",&rows, &cols) != 2)             break;         display(ch, rows, cols);         while (getchar() !=  '\n')             continue;         printf("Enter another character and two integers;\n");         printf("Enter a newline to quit.\n");     }     printf("Bye.\n");        return 0; }   void display(char cr, int lines, int width) {     int row, col;       for (row = 1; row <= lines; row++)     {         for (col = 1; col <= width; col++)             putchar(cr);         putchar('\n');  /* end line and start a new one */     } } 500)this.width=500'>
 

阅读全文(3717) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144766100 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号