第 12 章 标准输入输出库
问题列表:
12.1 这样的代码有什么问题?char c; while((c = getchar()) != EOF) ...
12.2 我有个读取直到EOF 的简单程序, 但是我如何才能在键盘上输入那个“EOF” 呢?
12.3 为什么这些代码while(!feof(infp)) { fgets(buf, MAXLINE,infp); fputs(buf, outfp); } 把最后一行复制了两遍?
12.4 我的程序的屏幕提示和中间输出有时显示在屏幕上, 尤其是当我用管道向另一个程序输出的时候。
12.5 我怎样不等待回车键一次输入一个字符?
12.6 我如何在printf 的格式串中输出一个’%’?我试过\%, 但是不行。
12.7 有人告诉我在printf 中使用%lf 不正确。那么, 如果scanf() 需要%lf, 怎么可以用在printf() 中用%f 输出双精度数呢?
12.8 对于size t 那样的类型定义, 当我不知道它到底是long 还是其它类型的时候, 我应该使用什么样的printf 格式呢?
12.9 我如何用printf 实现可变的域宽度?就是说, 我想在运行时确定宽度而不是使用%8d?
12.10 如何输出在千位上用逗号隔开的数字?金额数字呢?
12.11 为什么scanf("%d", i) 调用不行?
12.12 为什么char s[30]; scanf("%s", s); 不用& 也可以?
12.13 为什么这些代码double d; scanf("%f", &d); 不行?
12.14 怎样在scanf() 格式串中指定可变的宽度?
12.15 当我用“%d\n” 调用scanf 从键盘读取数字的时候, 好像要多输入一行函数才返回。
12.16 我用scanf %d 读取一个数字, 然后再用gets() 读取字符串, 但是编译器好像跳过了gets() 调用!
12.17 我发现如果坚持检查返回值以确保用户输入的是我期待的数值, 则scanf() 的使用会安全很多, 但有的时候好像会陷入无限循环。
12.18 为什么大家都说不要使用scanf()?那我该用什么来代替呢?
12.19 我怎样才知道对于任意的sprintf 调用需要多大的目标缓冲区?怎样才能避免sprintf() 目标缓冲区溢出?
12.20 为什么大家都说不要使用gets()?
12.21 为什么调用printf() 之后errno 内有ENOTTY?
12.22 fgetops/fsetops 和ftell/fseek 之间有什么区别?fgetops() 和fsetops() 到底有什么用处?
12.23 如何清除多余的输入, 以防止在下一个提示符下读入?fflush(stdin)可以吗?
12.24 既然fflush() 不能, 那么怎样才能清除输入呢?
12.25 对某些路径文件名调用fopen() 总是失败。
12.26 我想用“r+” 打开一个文件, 读出一个字符串, 修改之后再写入, 从而就地更新一个文件。可是这样不行。
12.27 怎样在程序里把stdin 或stdout 重定向到文件?
12.28 一旦使用freopen() 之后, 怎样才能恢复原来的stdout (或stdin)?
12.29 怎样同时向两个地方输出, 如同时输出到屏幕和文件?
12.30 怎样正确的读取二进制文件?我有时看到0x0a 和0x0d 混淆了, 而且如果数据中包含0x1a 的话, 我好像会提前遇到EOF。