试题题干
从文本文件old.txt读取字符,将其中的英文字母‘a’、‘b’、‘c’、‘d’和‘e’分别替换为‘+’、‘-’、‘*’、‘/’和‘%’其余字符不变,然后写入文本文件new.txt。
参考答案
试题解析
#include<stdio.h>
#include<stdlib.h>
void main() /*定义主函数*/
{
FILE *fp1,*fp2; /*定义文件型指针fp1,fp2*/
char c; /*定义字符型变量c*/
if((fp1=fopen("old.txt","r"))=NULL) /*以只读方式打开文本文件*/
{ printf("error\n"); exit(0);} /*输出错误,退出程序*/
if((fp2=fopen("new.txt","w"))=NULL) /*以只写方式打开文本文件*/
{ printf("error\n"); exit(0);} /*输出错误,退出程序*/
while(!feof(fp1)) /*若不是fp1的文件尾则继续循环*/
{
c=fgetc(fp1); /*从fp1所指向的文本文件读取一个字符*/
switch(c) /*对字符进行转换*/
{
case'a':fputc('+',fp2);break; /*若字符为a,则将+写入到fp2所指向的文本文件*/
case'b':fputc('-',fp2);break; /*若字符为b,则将-写入到fp2所指向的文本文件*/
case'c':fputc('*',fp2);break; /*若字符为c,则将*写入到fp2所指向的文本文件*/
case'd':fputc('/',fp2);break; /*若字符为d,则将/写入到fp2所指向的文本文件*/
case'e':fputc('%',fp2);break; /*若字符为e,则将%写入到fp2所指向的文本文件*/
default:fputc(c,fp2); /*其他情况则字符不变写入到fp2所指向的文本文件*/
}
}
fclose(fp1); /*关闭fp1所指向的文件*/
fclose(fp2); /*关闭fp2所指向的文件*/
}