1.了解getchar()
在学习计算机编程的初期,getchar()函数应该是我们必须要掌握的一个函数。因为,没有输入输出流,程序将无法和我们对话交流。
getchar()函数是一个可以从标准输入流"stdin"中读取下一个字符的函数。它的头文件为
每次调用getchar()函数,它会读取下一个字符并返回其ASCII码值。在遇到文件末尾(EOF,end-of-file)前,每调用一次getchar()函数就会读取一个字符。
#include
int main(){
int a = getchar();
printf("the character you input is: ");
putchar(a);
printf(" its ASCII code is: %d\n",a);
return 0;
}
2.getchar()的常见使用场景
2.1 输入字符串
我们可以使用getchar()函数来逐个读取用户输入的字符,然后将这些字符存储到一个字符数组中形成一个字符串。接下来,我们就可以对该字符串进行各种处理。
#include
#include
int main(){
char name[100];
int i = 0;
char a = getchar();
printf("please input your name:");
while(a != '\n'){ //因为输入结束标志为回车键,所以需要在读到回车键之前循环一直读入字符
name[i] = a;
i++;
a = getchar();
}
name[i] = '\0'; //printf函数需要最后一位为'\0'的字符串
printf("welcome %s\n",name);
return 0;
}
2.2 统计字数
我们做文字处理的时候,常常需要统计输入的字符数、单词数、行数等信息。字符数看似易于实现,读入一篇文章后逐个字符统计即可。实际上,这种方法是偏低效的。我们可以借助getchar()函数,来实现更高效的解决方案。
#include
int main(){
int counter = 0;
char c = getchar();
while(c != EOF){ //'Ctrl+Z'结束输入,即可输出总字符数
counter++;
c = getchar();
}
printf("total characters: %d",counter);
return 0;
}
3.getchar()与EOF的关系
EOF(end-of-file)表示输入的结束,可以作为getchar()函数的返回值,来确定输入的姿势。getchar()函数的返回值是int类型的,而EOF是一个预先定义好的整型常量,它的值可以是任何一个不等于EOF的整数。
我们需要在读取字符前判断是否遇到EOF,只有当未遇到EOF时,才能调用getchar()函数,否则程序将陷入死循环。
#include
int main(){
char c;
while((c = getchar()) != EOF){
//do something
}
return 0;
}
4.小结
getchar()函数是我们初学计算机编程时必须学会的一个函数,它能够从标准输入流中读取下一个字符。getchar()函数的常见使用场景有输入字符串、统计字数等。
我们需要注意,EOF(end-of-file)表示输入的结束,我们可以使用getchar()函数配合EOF,来确定输入的结束姿态,否则会引发程序陷入死循环。