StdC--04 数组/scanf/printf

 


Highlight:

1.  输入缓冲区特点

2.  程序的输出可以到达屏幕的条件

3.  sizeof来确定数组大小

4.  数组初始化清零操作

5.  二维数组

6.  C99可变长数组

 


 

 

1.输入缓冲区特点:

  只有当其中的数据读走的时候,才会清除这个数据。
    scanf(数据类型) 和 缓冲区中的数据类型不一致的时候,便无法读走数据,可能会导致死循环
    
解决办法:
    scanf("%*[^\n]");
    * 忽略读到的内容
    [^\n] 任何非\n的字符
    
    将\n之前的所有字符读走
    
    scanf("%*c");
    从缓冲区读取一个字符 忽略掉
    
scanf调用失败(主要原因:类型不匹配) 返回0  所以,我们可以将之前的代码改变为:
=============================================================

 1 #include <stdio.h>
  2
  3 int main(){
  4     int a,b;
  5     if(scanf("%d",&a)==0){
  6         scanf("%*[^\n]");   //remove all charaters which is in front of \n
  7         scanf("%*c");       //remove \n
  8     }
  9     if(scanf("%d",&b)==0){
 10         scanf("%*[^\n]");
 11         scanf("%*c");
 12     }
 13     printf("a=%d, b=%d\n",a,b);
 14     return 0;
 15 }

 


=============================================================

2. 程序的输出可以到达屏幕的条件:
    <1> \n
    <2> 程序结束
    <3> 输出缓冲区满(4Kb)
    <4> 人工刷新(fflush)

    
3. sizeof来确定数组大小


    sizeof(数组) = sizeof(数组的元素)*元素的个数
        int a[]={0};
        sizeof(a) = sizeof(a[0]) * 10;
        
    通过sizeof计算数组的大小:    
          
    数组的长度 = sizeof(数组)/sizeof(元素)
        int b = sizeof(a)/sizeof(a[0]);

 

4. 清零操作,在使用数组前有必要进行清零操作

  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5     int a[10];
  6     a[0]=100;
  7     a[5]=500;
  8     a[9]=900;
  9     int i;
 10     for(i=0;i<10;i++)
 11     {
 12         printf("a[%d]=%d\n",i,a[i]);
 13         }
 14     return 0;
 15     }
View Code

 

  ---- 除了a[0] a[4] a[9] 这三个确定赋值之外的其他元素的数值,都是随机数组,并没有什么规律。所以,以后我们在使用数组的时候,有必要进行清零操作。

  ---- 初始化一位数组(清零操作) 一般可以写成

        a[nums]={0}

 

5. 二维数组

 ....

6. C99 可边长数组

  1 #include <stdio.h>
  2
  3 int main()
  4 {
  5     int n;
  6     printf("pls enter one number: ");
  7     scanf("%d",&n);
  8     float s[n];
  9     int i=0;
 10     for(;i<n;i++)
 11     {
 12         printf("please enter %d's", i+1);
 13         scanf("%f",&s[i]);
 14         }

 

  

 

 

posted @ 2014-06-17 13:49  wg934  阅读(309)  评论(0编辑  收藏  举报