getc 函数的作用是从 FILE* 指针指向的文件中读取 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 函数原型 :
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 函数写出一个字节到另外一个文件中 ;
#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 函数写出一个字节到另外一个文件中 ;
#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