C 语言文件操作 ( getc 和 putc 函数 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言文件操作 ( getc 和 putc 函数 )相关的知识,希望对你有一定的参考价值。





一、getc 函数



getc 函数的作用是从 FILE* 指针指向的文件中读取 1 1 1 个字符 ,

int getc(FILE *stream);

FILE *stream 参数 : 要读取字符的文件 ;

int 返回值 : 读取到的字符返回 int 类型值 ;


如果要读取文件中的内容 , 需要循环逐个字节读取 ;

文件结尾标识符是 EOF

#define EOF (-1)

在文本中 , 读取到 EOF , 说明读取到文件结尾了 ;

#include <stdio.h>

int main()
{
    // 以 r 只读方式 打开 二进制文件
    FILE *p = fopen("D:\\\\a.txt", "r");
    if(p == NULL)
    {
        printf("File Open Failed !\\n");
    }else
    {
        printf("File Open Success !\\n");

        char c = 0;
        // 读取到文件末尾 EOF 退出循环
        while(c != EOF){
            c = getc(p);
            printf("%c", c);
        }

        // 如果打开成功 , 则需要关闭文件
        fclose(p);
    }

    printf("Main End\\n");
    return 0;
}

执行结果 :

在这里插入图片描述





二、putc 函数



putc 函数的作用是 , 一次写入一个字符到文件中 ;

putc 函数原型 :

int putc(int char, FILE *stream) 

int char 参数 : 要写入的字符 ;

FILE *stream 参数 : 要写入的文件系统 ;


代码示例 :

#include <stdio.h>

int main()
{
    // 以 w 只写方式 打开 二进制文件
    FILE *p = fopen("D:\\\\a.txt", "w");
    if(p == NULL){
        printf("File Open Failed !\\n");

    }else{
        printf("File Open Success !\\n");

        char c = 'A';
        int i = 0;

        for(i = 0; i < 26; i ++){
            putc(c, p);
            c++;
        }

        // 如果打开成功 , 则需要关闭文件
        fclose(p);
    }

    printf("Main End\\n");
    return 0;
}

执行结果 : 输出

ABCDEFGHIJKLMNOPQRSTUVWXYZ

在这里插入图片描述





二、使用 getc 和 putc 函数实现文件加密操作



逐个字节加密 : 使用 getc 函数读取一个字节 , 然后加密 , 再用 putc 函数写出一个字节到另外一个文件中 ;

#include <stdio.h>

#define SEC 5

int main()
{
    // 打开一个文件 , 以读的方式
    // r : 使用读的方式打开一个文件 ;
    FILE *p = fopen("D:\\\\a.txt", "r");

    // 打开一个文件 , 以写的方式
    // w : 如果文件不存在 , 就创建文件 , 如果文件存在 , 就将该文件覆盖 , 总之写出的是一个新文件 ;
    FILE *p2 = fopen("D:\\\\b.txt", "w");

    char s = 0;
    while ((s = getc(p)) != EOF){
        // 字符自增
        s += SEC;

        // 将读取到的数据写入到 p2 文件中
        putc(s, p2);
    }

    // 关闭文件
    fclose(p);
    fclose(p2);

    printf("Main End\\n");
    return 0;
}


执行结果 :

a.txt 内容 :

ABCDEFGHIJKLMNOPQRSTUVWXYZ

加密后的 b.txt 内容 :

FGHIJKLMNOPQRSTUVWXYZ[\\]^_

在这里插入图片描述





四、使用 getc 和 putc 函数实现文件解密操作



逐个字节加密 : 使用 getc 函数读取一个字节 , 然后解密 , 再用 putc 函数写出一个字节到另外一个文件中 ;

#include <stdio.h>

#define SEC 5

int main()
{
    // 打开一个文件 , 以读的方式
    // r : 使用读的方式打开一个文件 ;
    FILE *p = fopen("D:\\\\b.txt", "r");

    // 打开一个文件 , 以写的方式
    // w : 如果文件不存在 , 就创建文件 , 如果文件存在 , 就将该文件覆盖 , 总之写出的是一个新文件 ;
    FILE *p2 = fopen("D:\\\\c.txt", "w");

    char s = 0;
    while ((s = getc(p)) != EOF){
        // 字符自减
        s -= SEC;

        // 将读取到的数据写入到 p2 文件中
        putc(s, p2);
    }

    // 关闭文件
    fclose(p);
    fclose(p2);

    printf("Main End\\n");
    return 0;
}

执行结果 :

b.txt 内容 :

FGHIJKLMNOPQRSTUVWXYZ[\\]^_

加密后的 c.txt 内容 :

ABCDEFGHIJKLMNOPQRSTUVWXYZ

在这里插入图片描述

以上是关于C 语言文件操作 ( getc 和 putc 函数 )的主要内容,如果未能解决你的问题,请参考以下文章

如何为单字符 i/o 定义 getc 和 putc 函数,并提供适当的 i/o 操作缓冲 MIPS

C 语言文件操作 ( fseek 函数 )

C语言中的标准函数都有哪些

C语言中的标准函数都有哪些?

getc_unlocked,putc_unlocked,getchar_unlocked,putchar_unlocked

C 语言文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )