• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 40, 文章 - 0, 評論 - 9, 引用 - 0
            數據加載中……

            C++文件讀寫函數介紹

            http://www.zxbc.cn/html/cjjhs/1413524521078.html

            今天給大家介紹一下C++中常用到的讀寫函數,新手可以收藏一下,方便以后查找。 
              1.fopen()
              fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen實現三個功能:為使用而打開一個流,把一個文件和此流相連接,給此流返回一個FILR指針。
              參數filename指向要打開的文件名,mode表示打開狀態的字符串,其取值如下:
              字符串 含義
              "r" 以只讀方式打開文件
              "w" 以只寫方式打開文件
              "a" 以追加方式打開文件
              "r+" 以讀/寫方式打開文件,如無文件出錯
              "w+" 以讀/寫方式打開文件,如無文件生成新文件
            一個文件可以以文本模式或二進制模式打開,這兩種的區別是:在文本模式中回車被當成一個字符’\n’,而二進制模式認為它是兩個字符 0x0D,0x0A;如果在文件中讀到0x1B,文本模式會認為這是文件結束符,也就是二進制模型不會對文件進行處理,而文本方式會按一定的方式對數據作 相應的轉換。
              系統默認的是以文本模式打開,可以修改全部變量_fmode的值來修改這個設置,例如_fmode=O_TEXT;就設置默認打開方式為文本模式;而_fmode=O_BINARY;則設置默認打開方式是二進制模式。
              我們也可以在模式字符串中指定打開的模式,如"rb"表示以二進制模式打開只讀文件,"w+t"或"wt+"表示以文本模式打開讀/寫文件。
              此函數返回一個FILE指針,所以申明一個FILE指針后不用初始化,而是用fopen()來返回一個指針并與一個特定的文件相連,如果成敗,返回NULL,中國自學編程網,www.zxbc.cn
              例:
               以下是引用片段:
            FILE *fp; 
              if(fp=fopen("123.456","wb")) 
              puts("打開文件成功"); 
              else 
              puts("打開文件成敗");
              2.fclose()
              fclose()的功能就是關閉用fopen()打開的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失敗返回EOF。
              在程序結束時一定要記得關閉打開的文件,不然可能會造成數據丟失的情況,我以前就經常犯這樣的錯誤。
              例:fclose(fp);
              3.fputc()
              向流寫一個字符,原型是int fputc(int c, FILE *stream); 成功返回這個字符,失敗返回EOF。
              例:fputc(’X’,fp);
              4.fgetc()
              從流中讀一個字符,原型是int fputc(FILE *stream); 成功返回這個字符,失敗返回EOF。
              例:char ch1=fgetc(fp);
              5. fseek()
            此函數一般用于二進制模式打開的文件中,功能是定位到流中指定的位置,原型是 int fseek(FILE *stream, long offset, int whence);如果成功返回0,參數offset是移動的字符 數,whence是移動的基準,取值是:
              符號常量 值 基準位置
              SEEK_SET 0 文件開頭
              SEEK_CUR 1 當前讀寫的位置
              SEEK_END 2 文件尾部
              例:fseek(fp,1234L,SEEK_CUR);//把讀寫位置從當前位置向后移動1234字節(L后綴表示長整數)
              fseek(fp,0L,2);//把讀寫位置移動到文件尾
              6.fputs()
              寫一個字符串到流中,原型int fputs(const char *s, FILE *stream);
                例:fputs("I Love You",fp);
              7.fgets()
              從流中讀一行或指定個字符,原型是char *fgets(char *s, int n, FILE *stream); 從流中讀取n-1個字符,除非讀完一行,參數s是來接收字符串,如果成功則返回s的指針,否則返回NULL。
              例:如果一個文件的當前位置的文本如下:
              Love ,I Have
              But ……..
              如果用
              fgets(str1,4,file1);
              則執行后str1="Lov",讀取了4-1=3個字符,而如果用
              fgets(str1,23,file1);
              則執行str="Love ,I Have",讀取了一行(不包括行尾的’\n’)。
              8.fprintf()
              按格式輸入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不過不是寫到控制臺,而是寫到流罷了。
              例:fprintf(fp,"%2d%s",4,"Hahaha");
              9.fscanf()
              從流中按格式讀取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不過不是從控制臺讀取,而是從流讀取罷了。
              例:fscanf(fp,"%d%d" ,&x,&y);
              10.feof()
              檢測是否已到文件尾,是返回真,否則返回0,其原型是int feof(FILE *stream);
              例:if(feof(fp))printf("已到文件尾");
              11.ferror()
              原型是int ferror(FILE *stream);返回流最近的錯誤代碼,可用clearerr()來清除它,clearerr()的原型是void clearerr(FILE *stream);
              例:printf("%d",ferror(fp));
              12.rewind()
              把當前的讀寫位置回到文件開始,原型是void rewind(FILE *stream);其實本函數相當于fseek(fp,0L,SEEK_SET);
              例:rewind(fp);
              12.remove()
              刪除文件,原型是int remove(const char *filename); 參數就是要刪除的文件名,成功返回0。
              例:remove("c:\\io.sys");
              13.fread()
            從流中讀指定個數的字符,原型是 size_t fread(void *ptr, size_t size, size_t n, FILE *stream);參數ptr是保存讀取的 數據,void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的字節數;n是讀取的塊數,如果成功,返回實際讀 取的塊數(不是字節數),本函數一般用于二進制模式打開的文件中。
              例:
               以下是引用片段:
            char x[4230]; 
              FILE *file1=fopen("c:\\msdos.sys","r"); 
              fread(x,200,12 ,file1);//共讀取200*12=2400個字節
              14.fwrite()
            與fread對應,向流中寫指定的數據,原型是 size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);參數 ptr是要寫入的數據指針,void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的字節數;n是要寫的塊數, 如果成功,返回實際寫入的塊數(不是字節數),本函數一般用于二進制模式打開的文件中。
                例:
               以下是引用片段:
              char x[]="I Love You"; 
              fwire(x, 6,12,fp);//寫入6*12=72字節 
              將把"I Love"寫到流fp中12次,共72字節
              15.tmpfile()
              其原型是FILE *tmpfile(void); 生成一個臨時文件,以"w+b"的模式打開,并返回這個臨時流的指針,如果失敗返回NULL。在程序結束時,這個文件會被自動刪除。
              例:FILE *fp=tmpfile();
              16.tmpnam();
              其原型為char *tmpnam(char *s); 生成一個唯一的文件名,其實tmpfile()就調用了此函數,參數s用來保存得到的文件名,并返回這個指針,如果失敗,返回NULL。
              例:tmpnam(str1);

            posted on 2008-09-12 17:07 閱讀(767) 評論(0)  編輯 收藏 引用 所屬分類: c++開發具體技術

            AV色综合久久天堂AV色综合在 | 久久99国产精一区二区三区 | 久久国产免费| 伊人久久大香线蕉综合网站| 久久久久久久久久久精品尤物| 亚洲精品乱码久久久久久按摩| 中文字幕一区二区三区久久网站| 久久久久国产亚洲AV麻豆| 亚洲精品国产字幕久久不卡| 久久精品成人国产午夜| 久久久久久久综合狠狠综合| 久久伊人精品青青草原高清| 久久久这里有精品| 久久久精品波多野结衣| 99久久er这里只有精品18| 国产欧美久久久精品影院| 国产精品va久久久久久久| 久久精品毛片免费观看| 久久精品视频一| 久久精品国产亚洲Aⅴ香蕉| 久久久久国产一级毛片高清版| 亚洲精品国产第一综合99久久| 品成人欧美大片久久国产欧美...| 久久av无码专区亚洲av桃花岛| 合区精品久久久中文字幕一区| 久久精品亚洲乱码伦伦中文| 99久久国语露脸精品国产| 久久精品国产亚洲av麻豆蜜芽| 狠狠综合久久综合中文88| 久久亚洲精品视频| 中文精品久久久久国产网址| 久久精品www| 久久精品国产一区二区三区| 伊人久久大香线焦综合四虎| 成人精品一区二区久久| 香蕉久久夜色精品国产小说| 2021久久精品国产99国产精品| 狠狠色婷婷久久一区二区三区| 精品国产VA久久久久久久冰 | 久久免费看黄a级毛片| 久久久亚洲裙底偷窥综合|