C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第12章文件

【练习12-1】读出例12-1学生成绩文件f12-1.txt内容,输出最高分和最低分及相应的学号和姓名。

解答:

#include

#include

struct student{

long num;

char stname[20];

int score;

};

int main(void)

{

FILE *fp;

int i,max,min,j=0,k=0;

struct student students[5];

if((fp=fopen("f12-1.txt","r"))==NULL) {

printf("File open error!\n");

exit(0);

}

fscanf(fp,"%ld%s%d",&students[0].num,students[0].stname,&students[0] .score);

max=min=students[0].score;

for(i=1;i<=4;i++){

fscanf(fp,"%ld%s%d",&students[i].num,students[i].stname,&students[i]. score);

if(max

max=students[i].score;

j=i;

}

if(min>students[i].score){

min=students[i].score;

k=i;

}

}

printf("Max

score: %d,num:%d,name:%s\n",students[j].score,students[j].num,&studen ts[j].stname);

printf("Min

score: %d,num:%d,name:%s\n",students[k].score,students[k].num,&studen ts[k].stname);

if(fclose(fp)){

printf("Can not close the file!\n");

exit(0);

}

return 0;

}

【练习12-2】请使用例8-9答电码加密函数对民吗字符串进行加密,改写例12-2。解答:

#include

#include

#include

struct sysuser{

char username[20];

char password[8];

};

void encrypt(char *pwd);

int main(void)

{

FILE *fp;

int i;

struct sysuser su;

if((fp=fopen("f12-2.txt","w"))==NULL){

printf("File open error!\n");

exit(0);

}

for(i=1;i<=5;i++){

printf("Enter %dth sysuser (name password):",i);

scanf("%s%s",ername,su.password);

encrypt(su.password);

fprintf(fp,"%s %s\n",ername,su.password);

}

if(fclose(fp)){

printf("Can not close the file!\n");

exit(0);

}

return 0;

}

void encrypt(char *pwd)

{

int i;

for(i=0;i

if(pwd[i]=='z')

pwd[i]='a';

else

pwd[i]+=1;

}

【练习12-3】例12-3中为什么在执行fputc(ch,fp2)前要判断ch的值是否等于EOF?改写例12-3的程序,在复制用户信息文件后,再统计被复制文件中字符的数量。

解答:

文件结束符EOF是一个值为-1的常量,读文件时可用来判断从文件中读入的字符是否为EOF来决定循环是否继续。

#include

#include

int main(void)

{

FILE *fp1,*fp2;

char ch;

int count=0;

if((fp1=fopen("f12-2.txt","r"))=NULL){

printf("File open error!\n");

exit(0);

}

if((fp2=fopen("f12-3.txt","w"))==NULL){

printf("File open error!\n");

exit(0);

}

while(!feof(fp1)){

ch=fgetc(fp1);

if(ch!=EOF) {

fputc(ch,fp2);

count++;

}

}

if(fclose(fp1)){

printf("Can not close the file!\n");

exit(0);

}

if(fclose(fp2)){

printf("Can not close the file!\n");

exit(0);

}

printf("f12-2中字符数量为:%d",count);

return 0;

}

【练习12-4】字母转换并统计行数: 读取一个指定的文本文件,显示在屏幕上,如果有大写字母,则改成小写字母再输出,并根据回车符统计行数。试编写相应程序。

相关文档
最新文档