单字符I/O: getchar()和putchar()

  1. /*echo.c -- 重复输入*/
  2. #include "stdio.h"
  3. int main(){
  4. char ch;
  5. while((ch = getchar()) != '#'){
  6. putchar(ch);
  7. }
  8. return 0;
  9. }

其中#就是结束键盘输入

  1. /*echo_eof.c -- 重复输入直到文件结尾*/
  2. #include "stdio.h"
  3. int main(){
  4. int ch;
  5. while ((ch = getchar()) != EOF){
  6. putchar(ch);
  7. }
  8. return 0;
  9. }
  • 不用定义EOF,因为在stdio.h中用#define定义和预处理过了

重定向

  1. echo_eof < words #linux
  1. /*file_eof.c -- 打开一个文件并显示该文件*/
  2. #include "stdio.h"
  3. #include "stdlib.h" //为了使用 exit()
  4. int main(){
  5. int ch;
  6. FILE * fp;
  7. char fname[50];//存储文件名
  8. printf("输入文件名:");
  9. scanf("%s",&fname);
  10. fp = fopen(fname, "r"); //打开待读取文件
  11. if(fp == NULL){//如果失败
  12. printf("文件不存在");
  13. exit(1); //退出程序
  14. }
  15. while((ch = getc(fp)) != EOF){
  16. putchar(ch);
  17. }
  18. fclose(fp); //关闭文件
  19. return 0;
  20. }

输入验证

  1. /*inputCheck.c -- 输入验证*/
  2. #include "stdio.h"
  3. int main(){
  4. int a;
  5. scanf("%d",&a);//输入第一个数
  6. while (a>=0){ //不在范围内时,执行循环
  7. scanf("%d",&a);//获取下一个值
  8. }
  9. return 0;
  10. }

switch和while循环

  1. /*whileAndSwitch.c -- 循环和多重判断结合使用*/
  2. #include "stdio.h"
  3. int main(){
  4. char ch;
  5. while((ch = getchar()) != 'q'){
  6. switch(ch){
  7. case 'A': putchar("this is A");break;
  8. case 'B': putchar("this is B");break;
  9. default: putchar("auther one");break;
  10. }
  11. }
  12. return 0;
  13. }

putchar(getchar()) : 是输出空格再输入