这是《小白C语言编程实战》系列的第23篇。
上一篇:小白C语言编程实战(22):结构体的应用
题目
对给定的文件file1.txt
,请编程读取该文件的内容,并将其内容“加密”,规则是:每个英文字母转换为其在26个字母表中后面第4个字母(比如字母A变成字母E,以此类推),26个字母首尾相连构成环;非英文字母则不作改变。加密后的密文写入文件file2.txt
。
提示和要求
(1)请定义文件指针,分别指向文件file1.txt
和file2.txt
,并通过指针读写相应文件。具体定义为:
FILE *pin, *pout;
其中pin
指向file1.txt
, pout
指向file2.txt
。
注意:务必使用给定名字pin、pout定义文件指针!
参考代码
#include <stdio.h>
#include <stdlib.h>
#define N 1024
int main() {
FILE *pin, *pout;
pin = fopen("file1.txt", "rb");
pout = fopen("file2.txt", "wb");
char buf[N];
size_t cnt;
while((cnt=fread(buf,sizeof(char),N, pin)) > 0) {
int i;
for(i=0;i<cnt;i++) {
char c = buf[i];
if(c>='a' && c<='z') {
int pos = (c-'a') + 4;
if(pos > 25) {
pos %= 26;
}
c = (char)('a'+pos);
} else if(c>='A' && c<='Z') {
int pos = (c-'A') + 4;
if(pos > 25) {
pos %= 26;
}
c = (char)('A'+pos);
}
//输出字符到pout文件
fputc(c, pout);
}
}
//最后关闭打开的文件
fclose(pin);
fclose(pout);
return 0;
}