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
getc_unlocked,putc_unlocked,getchar_unlocked,putchar_unlocked