chapter 8 in C primer plus

1、 getchar() 和putchar()

                一个一个字符的读取和输出

2、以上宏使用缓存区进行输出刷新

        两种缓冲区:

                1、完全缓冲区 fully buffered

                                当缓冲区满的时候被清空,即缓冲区满的时候将内容刷新到目的地。一般出现在文件输入中。 缓冲区大小一般为512或者4096字节

                2、行缓冲区: line buffered

                          当遇到换行符的时候,就将缓冲区的内容进行清空,刷新。例如:键盘输入是标准的行缓冲。

3、c中getchar() 在到达文件结尾时返回一个特殊值,而不去管操作系统是如何检测文件结尾的。赋予该值的名称是EOF(end of file),所以监测到文件结尾的返回值是EOF。同样scanf()也是通过检测EOF来判断是否已经到文件尾部。

        EOF 在stdio.h中进行定义: #defien EOF (-1)

        -1 值不出现在ASCII 码表中,而且是负值。

        注释: c语言实际判断文件是否到达尾部的方法是: 判断当前读取的位置与文件的大小进行比较,如果两个值相同那么说明已经到了文件的尾部,这时候读取文件函数返回EOF。

        一般情况下,现代操作系统都是如此处理是否到达文件尾部的。

        注释2: 早期MS_DOS系统通过在文件的尾部添加^z 来表示文件尾部,也就是说,只要读取到^z 该字符就表示已经读取到了文件尾部。

        注释3:

                window系统文件

                        行尾是使用的\r\n

                linux 系统文件

                        行尾是使用的\n

                因此window文件拷贝到linux下格式是不正确的,尤其是可执行的脚本文件将会发生错误

        注释4: 如果要是通用getchar()中输入结束符号EOF,则必须知道该操作系统结束标记是什么,不可简单的输入EOF、-1 来结束输入。有些系统是痛ctrl+D, 有些系统是痛ctrl+z等

4、重定向

        <  重定向输入

        >  重定向输出

        

/* echo.c -- */

#include <stdio.h>

int main(void)
{
    char ch;

    while((ch=getchar()) != EOF)
    {
        putchar(ch);
    }


    return 0;
}

编译对象为a.out

   执行: a.out < filename  将文件filename中的内容输入到a.out程序中

   执行: a.out > filename  将输入流中的内容重定向输出到filename文件中。

    文件拷贝:        多个重定向

        a.out < sourcefile > distiname  将sourcefile文件拷贝distiname文件

5、实例代码:打印文件内容

/* file_eof.c -- */
#include <stdio.h>

#include <stdlib.h>

int main(void)
{
    char ch;
    
    FILE * fp;

    char fname[50];

    printf("Please enter the name of the file:");

    scan("%s",fname);

    fp = fopen(fname,"r");

    if(fp == NULL)
    {
        printf("Failed to open file ");
        exit(1);
    }
    while((ch=getc(fp)) != EOF)
    {
        putchar(ch);
    }
    fclose(fp);

    return 0;
}

6 、

        getchar 会获取一个字符,不会遗漏任何字符

        scanf 读取输入的时候会跳过空白字符,包括制表符、空白符、换行符。即scanf以遇到的第一个空白符为一个整体进行输入读取。返回值成功读取到的数据个数。

7、在c语言的输入输出函数中尤其要注意:空白字符和换行符号等不可见字符对程序的影响。

   

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...