C語言程序設(shè)計(jì)新編教程(第2版)答案第9章 文件 習(xí)題答案_第1頁
C語言程序設(shè)計(jì)新編教程(第2版)答案第9章 文件 習(xí)題答案_第2頁
C語言程序設(shè)計(jì)新編教程(第2版)答案第9章 文件 習(xí)題答案_第3頁
C語言程序設(shè)計(jì)新編教程(第2版)答案第9章 文件 習(xí)題答案_第4頁
C語言程序設(shè)計(jì)新編教程(第2版)答案第9章 文件 習(xí)題答案_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第9章文件習(xí)題答案1.下面的程序有什么問題?intmain(void){int*fp;intk;fp=fopen("gelatin");for(k=0;k<30;k++)fputs(fp,"Nanetteeatsgelatin");fclose("gelatin");return0;}答:因?yàn)槌绦蛴形募x,所以應(yīng)該有#include<stdio.h>。應(yīng)該把fp聲明為文件指針FILE*fp;函數(shù)fopen()需要一種模式:fopen(“gelatin”,”w”)或者a模式。Fputs函數(shù)中的參數(shù)的次序應(yīng)該反過來,為了清楚,輸出字符串應(yīng)該具有一個(gè)換行符,因?yàn)閒puts并不會(huì)自動(dòng)添加它。Fclose函數(shù)需要一個(gè)文件指針而不是文件名:fclose(fp)。以下為正確的版本#include<stdio.h>intmain(void){FILE*fp;intk;fp=fopen("gelatin","w");/*用亍創(chuàng)建可冐文件gelatin但賦值給一個(gè)文件指針*/for(k=0;k<30;k++)/*循環(huán)輸出*/fputs("Nanetteeatsgelatin\n",fp);fclose(fp);/*關(guān)閉文件*/return0;}2.編寫一個(gè)程序,將任意數(shù)目的字符串寫入文件。字符串由鍵盤輸入。#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文件自動(dòng)增加*/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.編寫一個(gè)程序,獲取用戶輸入文件名,如存在,則寫入從鍵盤輸入的字符串;如不存在,先創(chuàng)建,再獲取鍵盤輸入后寫入。#include<stdio.h>#include<process.h>main(){ FILE*fp; charfilename[30],str[30];/*定義兩個(gè)字符型數(shù)組*/ printf("pleaseinputfilename:\n"); scanf("%s",filename);/*輸入文件名*/ fp=fopen(filename,"w+"); printf("pleaseinputstring:\n");/*提示輸入字符串*/ getchar(); gets(str); fputs(str,fp);/*將字符串寫入fp所指向的文件中*/ fclose(fp);}4.編寫一個(gè)文件查看器,它可以將文件顯示為十六進(jìn)制和字符方式。#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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論