• <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>

            13.6 出錯的檢測

            C 標準提供一些函數(shù)用來檢查輸入輸出函數(shù)調(diào)用中的錯誤。

            13.6.1 ferror 函數(shù)

            在調(diào)用各種輸入輸出函數(shù)(如 putc, getc , fread, fwrite 等)時,日過出現(xiàn)錯誤,除了函數(shù)返回值有所反映外,還可以用 ferror 函數(shù)檢查。它的一般調(diào)用形式為   ferror(fp);   如果 ferror 函數(shù)返回值為0(假),表示未出錯;如果返回一個非零值,表示出錯。應(yīng)該注意,對同一個文件每一次調(diào)用輸入輸出函數(shù),均產(chǎn)生一個新的 ferror 函數(shù)值,因此,應(yīng)當在調(diào)用一個輸入輸出函數(shù)后立即檢查 ferror 函數(shù)的值,否則信息會丟失。

               在執(zhí)行 fopen 函數(shù)時,ferror 函數(shù)的初始值自動置為0。


            13.6.2   clearerr (清除錯誤) 函數(shù)

            clearerr 函數(shù)的作用是使文件錯誤標志和文件結(jié)束標志置為0。假設(shè)在調(diào)用一個輸入輸出函數(shù)時出現(xiàn)錯誤, ferror 函數(shù)值為一個非零值。在調(diào)用 clearerr
            (fp)后,ferror(fp)的值變成0。

            只要出現(xiàn)錯誤標志,就一直保留,直到對同一文件調(diào)用 clearerr 函數(shù)或(重新)rewind 函數(shù),或任何其它一個輸入輸出函數(shù)。


             

                                          13.7 文件輸入輸出小結(jié)

               在本節(jié)中將以上介紹過的輸入輸出函數(shù)作一概括性的小結(jié),以一目了然,便于查閱。下表列出常用的緩沖文件系統(tǒng)函數(shù)。

               分類             函數(shù)名                   功                                能

            打開文件         fopen()                        打開文件

            關(guān)閉文件         fclose()                        關(guān)閉文件

            文                    fseek()                         改變文件位置指針的位置
               件                   rewind()                       使文件位置指針重新置于文件開頭
            定位                ftell()                            返回文件位置指針的當前值
                                         
                    文           fgetc(),getc()                從指定文件取得一個字符

                   件           fputc(),putc()                把字符輸出到指定文件

                   讀               fgets()                           從指定文件讀取字符串

                   寫              fputs()                           把字符串輸出到指定文件

                                      getw()                           從指定文件讀取一個字(int)型

                                     putw()                          把一個字(int)型輸出到指定文件

                                     fread()                        從指定文件中讀取數(shù)據(jù)項

                                     fwrite()                       把數(shù)據(jù)項寫到指定文件

                                     fscanf()                        從指定文件按格式輸入數(shù)據(jù)

                                    fprintf()                         按指定格式將數(shù)據(jù)寫到指定文件中

               文                feof()                         若到文件末尾,函數(shù)值為“真”(非0)
               件                ferror()                      若對文件操作出錯,函數(shù)值為“真”(非0)
            狀態(tài)             clearerr()                   使 ferror 和 feof 函數(shù)值置零

             

            文件這一章的內(nèi)容是很重要的,許多可供實際使用的 C 程序都包含文件處理
            .

            本章只介紹一些最基本的概念,由于篇幅所限,不可能舉復(fù)雜的例子。

             

            如何進行文件操作(程序如下)

            #include "stdio.h"
            main() /*先新建一個文件夾(file.txt),運行該程序后,就有輸入到文件中.*/
            {
               FILE *fp;
                int x,y,x1,y1,z;
                printf("please input two integer numbers:");
                scanf("%d %d",&x,&y);
                if((fp=fopen("file.txt","w"))==NULL) /*打開文件file.txt,準備往文件中寫入數(shù)據(jù)*/
                {
                     printf("cann't open file");
                       exit(0);
                }
                fprintf(fp,"%d %d",x,y); /*將x,y的值寫入文件*/
                fclose(fp);   /*關(guān)閉文件*/
                if((fp=fopen("file.txt","r"))==NULL) /*打開文件file.txt,準備從文件中讀出數(shù)據(jù)*/
                {
                       printf("cann't open file");
                       exit(0);

                }

            fscanf(fp,"%d %d",&x1,&y1); /*將剛才寫入的兩個整數(shù)分別讀到變量x1,y1中*/

            fclose(fp);   /*關(guān)閉文件*/

                z=x1+y1;    /*計算兩個數(shù)的和*/

                printf("z=%d",z);   /*顯示在屏幕上*/
            }

             

             

            file2.c 程序

            #include<stdlib.h>
            #include<stdio.h>
            void main()
            {
            FILE*in,*out;
            char ch,infile[10],outfile[10];
            printf("Enter the infile name:\n");
            scanf("%s",infile);
            printf("Enter the infile name:\n");
            scanf("%s",outfile);
            if((in=fopen(infile,"r"))==NULL)
            {
            printf("can not open infile\n");
            exit(0);
            }
            if((out=fopen(outfile,"w"))==NULL)
            {
            printf("can not open outfile\n");
            exit(0);
            }
            while(! feof(in)) fputc(fgetc(in),out);
            fclose(in);
            fclose(out);

            }

             

            file1(文本文檔里的內(nèi)容)

            11 12

            posted on 2010-08-13 08:51 wrh 閱讀(223) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2011年8月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            統(tǒng)計

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久无码专区不卡| 亚洲精品国产字幕久久不卡| 国产精品久久国产精品99盘 | 精品国产一区二区三区久久| 国产精品美女久久久久网| 99热热久久这里只有精品68| 偷窥少妇久久久久久久久| 久久国产精品一国产精品金尊| 国产精品内射久久久久欢欢| 亚洲国产欧美国产综合久久| 欧美久久综合性欧美| 久久亚洲日韩看片无码| 91麻豆精品国产91久久久久久| 人妻无码αv中文字幕久久琪琪布| MM131亚洲国产美女久久| 无码人妻久久一区二区三区蜜桃| 精品少妇人妻av无码久久| 一本一道久久a久久精品综合 | 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 91久久福利国产成人精品| 无码人妻久久一区二区三区免费丨| 精品久久久久中文字幕一区| 国产亚洲欧美精品久久久| 精品久久久久久久国产潘金莲| 久久久久黑人强伦姧人妻| 国产精品美女久久久久久2018| 久久精品国产亚洲av麻豆蜜芽| 亚洲国产精品一区二区三区久久| 久久青草国产手机看片福利盒子| 久久精品国产亚洲AV大全| 久久免费看黄a级毛片| 偷偷做久久久久网站| 久久精品国产福利国产琪琪| 青青青国产精品国产精品久久久久 | 中文字幕久久精品| 亚洲午夜精品久久久久久浪潮| 久久一本综合| 伊人色综合久久天天网| 久久亚洲AV无码精品色午夜 | 久久国产精品久久精品国产| 国产成人无码久久久精品一|