/*
**test13.cpp : Defines the entry point for the console application.
**系统winXP SP3 32位.
**getchar()与文件结束符EOF
*/
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
char cNum1;
char cNum2 = '\0';
printf("please input a char:\n");
cNum1 = getchar();
/*****************************
若输入±,则得出结果为cNum = ?
这是因为c是char类型,其取值范围是-128~+127,
±在其取值范围之外,故输出的值不可测。
若输入CTRL+Z(即文件结束符EOF),则输出error!EOF!
******************************/
if(cNum1 == EOF){
printf("error!EOF!\n");
}else{
printf("cNum1 = %c\n",cNum1);
}
if(cNum2 == EOF){
printf("error!EOF!\n");
}else{
printf("cNum2 = %c\n",cNum2);
printf("cNum2 = %d\n",cNum2); //0,\n的asc码是0
}
return 0;
}
Tips:getchar()在c语言中的是int型,正常情况下getchar()返回你输入的第一个字符,但是当碰到文件结束符亦或是读取错误时候,其无法返回有效的字符,而返回标志EOF,将EOF定义为-1,所以也就将getchar()的返回值类型设置为了int型。注意:这里若是输入的字符超出其表示范围的话,输出的值也是不可测的。如上面的例子。