美文网首页
第八章 字符输入/输出和输入验证——《C Primer Plus

第八章 字符输入/输出和输入验证——《C Primer Plus

作者: One2INF | 来源:发表于2023-02-03 15:58 被阅读0次

第八章 字符输入/输出和输入验证

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

8.2 缓冲区

无缓冲输入:输入字符后,程序马上能读取字符;

缓冲输入:输入的字符临时缓存,特定条件后(缓冲区满/输入 Enter)刷新,程序才能读取字符;

  1. 大多数系统都是此方式,一次发送多个比逐个发送节约时间;
  2. 方便修正要发送的数据;

完全缓冲:只有在缓冲区满时才刷新缓冲区;

行缓冲:按下 Enter后刷新缓冲。

8.3 结束键盘输入

C 函数读取到文件末尾时,会返回 EOF ,当输入是键盘时,可以模拟文件末尾(Windows:CTRL + Z;Linux:CTRL + D)。

8.4 重定向和文件

重定向:C 程序默认从 stdin 获取数据,不改变输入函数和数据类型,仅改变程序查找数据的位置。可以用 <> 重定向输入,输出

8.5 创建友好的用户界面

使用缓冲输入

输入缓冲要求用户按下 Enter 键,换行符同时也会被发送过来,需要谨慎处理这个麻烦的换行符。类似如下处理:

while(getchar() != 'y') /* 获取响应,与 y 做对比 */
{
  printf("Well,then, is it %d?\n", ++guess);
  while(getchar() != '\n')
    continue;    /* 跳过剩余的输入行 */
}

混合数值和字符输入

scanf 不会读取 Enter,空格,制表符,会留在输入队列。scanf 之后需要清理剩下的输入,类似处理如下:

if(scanf("%d %d", &rows, &cols) != 2)
  break;

display(ch, rows, cols);
while(getchar() != '\n')
  continue;

8.6 输入验证

用于用户输入数据和程序期望输入不匹配时,比如如下处理输入数据类型不匹配,当且仅当用户输入一个正整数时为真:

while(scanf("%ld", &n) == 1 && n >= 0)

8.7 菜单浏览

保证目标:

  1. 当用户遵循指令时程序顺利运行;
  2. 当用户没有遵循指令时,程序也能顺利运行。

相关文章

  • C Primer Plus(5版)第8章复习题讲解

    C Primer Plus 第五版的第8章着重讲解了字符的输入、输出以及对输入的确认。书后的复习题都是很不错的练手...

  • C++ Primer Plus习题

    C++ Primer Plus 第17章 输入、输出和文件 习题6 能读文件、显示所有数据 允许用户添加数据 数据...

  • C语言输入输出double类型数据

    c primer plus 上说用%f就可以格式化输入输出float、double类型的数据,但是今天写了一个小程...

  • c++代码入门2

    c++ 中的 标准输入输出 2.c++ 中的标准输入输出(字符类型) 3.c++ 中的无限输入(cin,cout)...

  • C语言从入门到精通所需的7本书

    C Primer Plus C Primer Plus作为一本被人推崇备至的c入门经典,C primer plus...

  • 数据的输入/输出

    标准输入输出流 字符输入: char c = (char)System.in.read(); 字...

  • C++笔记

    C++笔记 一、输入输出 scanf 输入字符串,%c,空格是不会被跳过的 用scanf输入,出现非控制字符,则...

  • 【C++】面向对象之C++输入和输出流-008

    第八章 c++输入和输出流 8.1 流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出...

  • c++输出

    c++输出(调整cout输出进制width()函数的使用) 引用c++primer plus 一书 调整cout输...

  • 【C语言】字符串输入输出函数

    字符串输出函数:puts 字符串输入函数:gets 在C语言中用于输入输出的字符串函数使用前应包含头文件"stdi...

网友评论

      本文标题:第八章 字符输入/输出和输入验证——《C Primer Plus

      本文链接:https://www.haomeiwen.com/subject/epdnhdtx.html