Skip to content

Latest commit

 

History

History
57 lines (48 loc) · 2.53 KB

复习题.md

File metadata and controls

57 lines (48 loc) · 2.53 KB

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

  1. putchar(getchar()) 是一个有效的表达式,它实现什么功能?getchar(putchar()) 是否也是有效表达式?
  1. putchar(getchar()) 功能:将程序读取的下一个字符并打印,getchar()的返回值是putchar() 的参数。

  2. getchar(putchar()) 无效表达式,原因:getchar()无需参数,而putchar则需要一个参数。

  1. 下面的语句分别完成什么任务?
a. putchar('H');            // 打印H
b. putchar('\007');         // 发出一下警报声
c. putchar('\n');           // 自带换行,所以会再进行一次换行
d. putchar('\b');           // 退后一格
  1. 假设有一个名为count的可执行程序,用于统计输入的字符数。设计一个使用count程序统计essay文件字符数的命令行,并把统计结果保存在essayct文件中。
count <essay > essayct #将essay作为输入然后通过重定向降结果放在essayct文件中
  1. 给定复习题3中的程序和文件,下面哪一条是有效的命令?
a. essayct <essay   // 不是,essay不是可执行文件 
b. count essay      // 不是,不是shell一样,可读取参数
c. essay > count    // 不是,essay是输入文件,不是可执行文件
  1. EOF是什么?✅

一个返回信号(一个特殊值,一般是-1),表明监测到文件结尾处。主要是getchar() 和scanf() 函数来使用。

  1. 对于给定的输入(ch是int类型,而且是缓冲输入),下面各个程序的输出分别是什么?
a. 输入如下If you quit, i will.[enter]
程序段如下while ((ch == getchar())!='i') // 输入读取中,如果=i就直接输出前面的内容
    putchar(ch);                // 输出内容:If you qu

b. 输入如下Harbor[enter]
程序段如下while((ch = getchar()) != '\n') // 从第一个进行读取,读到最后是空行时结束
{
    // 最后的输出是:HJacrthjacrt
    putchar(ch++);      // 注意H+1是I
    putchar(++ch);      // 上一个是I,再次++,就变成了J
}
  1. C如何处理不同计算机系统中的不同文件和换行约定?

将文件的不同属性和种类统一映射为流来处理。

  1. 在使用缓冲输入的系统汇总,把数值和字符串混合输入会遇到什么潜在的问题?

a. 读取到数值类型时:会直接跳过空格和换行符

b. 读取到字符串类型时:字符串则不会。

所以如果存在混合情况,则需要在处理字符输入之前就把换行符直接优先处理掉。