单字符I/O: getchar()和putchar()
/*echo.c -- 重复输入*/#include "stdio.h"int main(){char ch;while((ch = getchar()) != '#'){putchar(ch);}return 0;}
其中#就是结束键盘输入
/*echo_eof.c -- 重复输入直到文件结尾*/#include "stdio.h"int main(){int ch;while ((ch = getchar()) != EOF){putchar(ch);}return 0;}
- 不用定义EOF,因为在
stdio.h中用#define定义和预处理过了
重定向
echo_eof < words #linux
/*file_eof.c -- 打开一个文件并显示该文件*/#include "stdio.h"#include "stdlib.h" //为了使用 exit()int main(){int ch;FILE * fp;char fname[50];//存储文件名printf("输入文件名:");scanf("%s",&fname);fp = fopen(fname, "r"); //打开待读取文件if(fp == NULL){//如果失败printf("文件不存在");exit(1); //退出程序}while((ch = getc(fp)) != EOF){putchar(ch);}fclose(fp); //关闭文件return 0;}
输入验证
/*inputCheck.c -- 输入验证*/#include "stdio.h"int main(){int a;scanf("%d",&a);//输入第一个数while (a>=0){ //不在范围内时,执行循环scanf("%d",&a);//获取下一个值}return 0;}
switch和while循环
/*whileAndSwitch.c -- 循环和多重判断结合使用*/#include "stdio.h"int main(){char ch;while((ch = getchar()) != 'q'){switch(ch){case 'A': putchar("this is A");break;case 'B': putchar("this is B");break;default: putchar("auther one");break;}}return 0;}
putchar(getchar()) : 是输出空格再输入
