Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89557
  • 博文数量: 16
  • 博客积分: 367
  • 博客等级: 一等列兵
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-25 22:37
文章分类

全部博文(16)

文章存档

2012年(4)

2011年(12)

我的朋友

分类: C/C++

2011-11-07 19:48:23

    对于字符串,相信大家都喜欢用string.h库里面封装好的函数来进行操作,确实简单,方便,符号自然人的思维。倘若在有的简单应用里面不用此类函数,只用stdio.h里面的函数,有时候同样能起到一样的效果,里面甚至蕴含着编程的技巧和智慧。
    比如,输出一个数和其自身的平方。让用户输入需要显示的行数,如果这个数比较大,那么运行程序的时候只见满屏幕数字,无疑十分让人恼火。所以考虑每隔一定的数目,让用户继续操作(按回车继续),好让所有的数的值都能被看清,即达到如下效果:
实现的代码是这样的:
 
int main(void)
{
  int  n;
  long i;
 
  printf("This program prints a table of squares.\n");
  printf("Enter number of entries in table: ");
  scanf("%d", &n);
  getchar();
  for (i = 1; i <= n; i++){
    printf("%10ld%10ld\n", i, i * i);
    if(i % 24 == 0)
    {
       printf("Press Enter to continue...");
       getchar();
    }
  }
  return 0;
}
说明:实现的关键其实在于两次getchar函数的使用,第一次getchar();使得第25行显示正常,否则显示异常:
第二处使用getchar();阻碍了循环的执行,达到了让用户输入的效果;
 
  getchar();不判断拿到的符号是不是回车,及时输入其他字符,一样有该效果;也即是说getchar函数本身就能阻断循环..
  2.为什么25行显示正常要在循环外加一句getchar();这个函数怎么控制结果的输出?是什么原理...
弄清楚上述问题,今后遇到类似循环执行需要暂停的情况,有重要意义,对于getchar函数和循环一起的运用,可以实现很强大的功能。
阅读(3673) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

sunny_piza2011-11-07 20:34:18


if(i % 24 == 0) 这个才是控制输出停止的关键。 当循环执行过程中, i的值增加到24的时候(或者24的倍数), i % 24 (取模)就为0。 这个时候,就进入打印语句,同时getchar会等待用户输入一个字符。如果用户不输入,getchar就一直等待用户输入(程序此时处于阻塞的状态)。用户随便输入一个字符, getchar就能捕获, 然后程序继续执行。
两个关键: 1. getchar是阻塞式函数。 2. %(取模)的应用