wblyuyang

博客园 首页 新随笔 联系 订阅 管理

.printf
 %d:以十进制形式打印一个整型值
 %o:以八进制形式打印一个整型值
 %x:以十六进制形式打印一个整型值
 %g:打印一个浮点值
 %c:打印一个字符
  %s:打印一个字符串
 \n:换行

.int readColumnNumbers(int columns[],int max)
 在函数声明的数字参数中,并未指定数字的长度,这种格式是正确的,因为不论调用函数的程序传递给它的数字参数的长度是多少,这个函数都将照收不误。这是一个伟大的特性,它允许单个函数操纵任意长度的一维数组。这个特性不利的一面是函数没法知道该数组的长度。如果确实需要数组的长度,它的值必须作为一二单独的参数传递给函数.

.scanf("%d",&columns[num])
 scanf函数从标准输入读取字符并根据格式字符串对他们进行转换---类似于printf函数的逆操作。scanf函数接受几个参数,其中第一个参数是一个格式字符串,用于描述期望的输入类型,剩余几个参数都是变量,用于存储函数所读取的输入数据,scanf函数的返回值是函数成功转换并存储于参数中的个数
 scanf函数的所有标量参数的前面必须加上一个"&"符号。
 
 %d--读取一个整型值--int
 %ld--读取一个长整型值--long
 %f--读取一个实型值(浮点数)--float
 %lf--读取一个双精度实型值--double
 %c--读取一个字符--char
 %s--从输入中读取一个字符串--char型数组
 前5个格式代码用于读取标量值,所以变量参数的前面必须加上"&"符号,使用所有格式码(除了%c之外)时,输入值之前的空白(空格、制表符、换行符等)会被跳过,值后面的空白表示该值的结束。因此,用%s格式码输入字符串时,中间不能包含空白。

 标准并未硬性规定C编译器对数组下标的有效性检查,绝大多是C编译器也不进行检查,如果你需要进行数组下标的有效性检查,你必须自行写代码。

<-----------------------------------scanf--------------------------------------------------------

.scanf函数的返回值由后面的参数决定,返回值表示成功读入的数据个数
.scanf()中的变量必须使用地址
.scanf()格式控制串可以使用空白字符或其他非空白字符,使用空白字符会使scanf()函数在读操作中略去输入中的 

一个或多个空白字符,使用非空白字符会使scanf函数在读入时剔除掉与这个非空白字符相同的字符
.在使用"%c"输入时,空格和转义字符均作为有效字符

.键盘缓冲区残余信息问题
#include <stdio.h>
int main()
{
 int a;
 char c;
 do
 {
  scanf("%d",&a);
  scanf("%c",&c);
  printf("a=%d,c=%c\n",a,c);
  printf("c=%d\n",c);
 }while(c != 'N');
 return 0;
}
scanf("%c",&c)这个不能正常接收字符,printf("c=%d\n",c);结果为10,ASCII值为10的是\n,我们每击打一下

Enter键,向键盘缓冲区发去一个"回车\r",一个"换行\n",\r被scanf函数处理掉了,而\n被scanf函数接收。
可在连个scanf函数之后加fflush,或getchar(),getch()也可以。
#include <stdio.h>
int main()
{
 int a;
 char c;
 do
 {
  scanf("%d",&a);
  fflush(stdin);  //清除一个流
  scanf("%c",&c);
  fflush(stdin);
  printf("a=%d,c=%c\n",a,c);
  printf("c=%d\n",c);
 }while(c != 'N');
 return 0;
}
fflush在gcc下不可用
---------------------------------------------------------------------------------------------------->

a && b---a若为假便不再求值,
a || b---a若为真便不再求值
"="----赋值
"=="---相等

 (ch=getchar()) != EOF && ch != '\n'-----首先getchar函数从标准输入读取一个字符并返回它的值,如果输入中

不再存在任何字符,函数就会返回常量EOF,用于提示文件的结尾。从getchar函数返回的值被赋给变量ch,然后把它

与EOF进行比较,在赋值表达式两端加上括号用于确保赋值操作先于比较操作进行。
为什么ch被声明为整型,而我们事实上需要它来读取字符?答案是EOF是一个整型值(通常为-1),它的位数比字符类

型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF

posted on 2011-11-20 10:16  wblyuyang  阅读(307)  评论(0编辑  收藏  举报