




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章文件习题答案1.下面的程序有什么问题?intmain(void){int*fp;intk;fp=fopen("gelatin");for(k=0;k<30;k++)fputs(fp,"Nanetteeatsgelatin");fclose("gelatin");return0;}答:因为程序有文件定义,所以应该有#include<stdio.h>。应该把fp声明为文件指针FILE*fp;函数fopen()需要一种模式:fopen(“gelatin”,”w”)或者a模式。Fputs函数中的参数的次序应该反过来,为了清楚,输出字符串应该具有一个换行符,因为fputs并不会自动添加它。Fclose函数需要一个文件指针而不是文件名:fclose(fp)。以下为正确的版本#include<stdio.h>intmain(void){FILE*fp;intk;fp=fopen("gelatin","w");/*用亍创建可冐文件gelatin但赋值给一个文件指针*/for(k=0;k<30;k++)/*循环输出*/fputs("Nanetteeatsgelatin\n",fp);fclose(fp);/*关闭文件*/return0;}2.编写一个程序,将任意数目的字符串写入文件。字符串由键盘输入。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#defineBUFFER_SIZE50char*read_string(char*buffer,int*pbuffer_size);intmain(void){FILE*pFile=NULL;char*filename="d:\\myfile.txt";charanswer='n';size_tstr_length=0;intbuffer_size=BUFFER_SIZE;char*buffer=malloc(buffer_size);pFile=fopen(filename,"w");if(!pFile){printf("Erroropening%sforwriting.Programterminated.",filename);exit(1);}do{/*从键盘输入字符串*/printf("Enterastring:\n");read_string(buffer,&buffer_size);str_length=strlen(buffer);fwrite(&str_length,sizeof(size_t),1,pFile);fwrite(buffer,str_length,1,pFile);printf("Doyouwanttoenteranother(yorn)?");scanf("%c",&answer);fflush(stdin);}while(tolower(answer)=='y');fclose(pFile);printf("\nFilewritecomplete\n");if(buffer)free(buffer);return0;}/*从键盘读取字符串*//*如果字符串超过buffer文件大小*//*buffer文件自动增加*/char*read_string(char*buffer,int*pbuffer_size){char*temp=NULL;intposition=0;while((buffer[position++]=getchar())!='\n')if(position>=*pbuffer_size-1){/*Increasethesizeofthebuffer*/*pbuffer_size+=BUFFER_SIZE;temp=(char*)malloc(*pbuffer_size);buffer[position]='\0';strcpy(temp,buffer);free(buffer);buffer=temp;temp=NULL;}buffer[position-1]='\0';returnbuffer;}3.编写一个程序,获取用户输入文件名,如存在,则写入从键盘输入的字符串;如不存在,先创建,再获取键盘输入后写入。#include<stdio.h>#include<process.h>main(){ FILE*fp; charfilename[30],str[30];/*定义两个字符型数组*/ printf("pleaseinputfilename:\n"); scanf("%s",filename);/*输入文件名*/ fp=fopen(filename,"w+"); printf("pleaseinputstring:\n");/*提示输入字符串*/ getchar(); gets(str); fputs(str,fp);/*将字符串写入fp所指向的文件中*/ fclose(fp);}4.编写一个文件查看器,它可以将文件显示为十六进制和字符方式。#include<stdio.h>#include<ctype.h>#include<string.h>constintMAXLEN=256;constintDISPLAY=80;constintPAGE_LENGTH=20;intmain(intargc,char*argv[]){charfilename[MAXLEN];FILE*pfile;unsignedcharbuffer[DISPLAY/4-1];intcount=0;intlines=0;inti;if(argc==1){printf("Pleaseenterafilename:");fgets(filename,MAXLEN,stdin);intlen=strlen(filename);if(filename[len-1]=='\n')filename[len-1]='\0';}elsestrcpy(filename,argv[1]);if(!(pfile=fopen(filename,"rb"))){printf("Sorry,can'topen%s",filename);return-1;}while(!feof(pfile)){if(count<sizeofbuffer)buffer[count++]=(unsignedchar)fgetc(pfile);else{for(count=0;count<sizeofbuffer;count++)printf("%02X",buffer[count]);printf("|");for(count=0;count<sizeofbuffer;count++)printf("%c",isprint(buffer[count])?buffer[count]:'.');printf("\n");count=0;if(!(++lines%PAGE_LENGTH))if(getchar()=='E')return0;}}for(i=0;i<sizeofbuffer;i++)if(i<count)printf("%02X",buffer[i]);else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 松江区绩效管理办法
- 反洗钱渠道管理办法
- 新销售管理办法来了
- 水道镇河道管理办法
- 汽车直播间管理办法
- 台球房灯光管理办法
- 新客户导入管理办法
- 室内装修管理办法版
- 四川省工程管理办法
- 学校专业部管理办法
- GB/T 10250-2025船舶电气与电子设备电磁兼容性金属船体船舶
- 2025年人教版小学数学一年级上册期中考试题(带答案)
- 静脉输液不良反应及处理 课件
- 2025-2030中国红景天苷行业市场现状供需分析及投资评估规划分析研究报告
- 2024年矿井主要灾害事故防治及应急避险
- 村自来水管理制度
- 眼科医院近视防控措施及推广方案
- 2024-2025学年九年级数学上学期期末模拟卷(青岛版九年级上下册)(考试版)
- DBJ50T-220-2015 房屋建筑工程质量保修规程
- 光伏电站施工劳务合同范本
- 电商出入库流程
评论
0/150
提交评论