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

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            !=EOF 和 !feof() 的差別

            Posted on 2008-08-18 19:13 Prayer 閱讀(435) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C/C++

            用C寫(xiě)了一個(gè)讀文件的函數(shù),讀普通文本沒(méi)有問(wèn)題,可是當(dāng)讀取一些二進(jìn)制文件時(shí)就出現(xiàn)問(wèn)題了--函數(shù)總是沒(méi)法把文件的所有內(nèi)容讀出來(lái).

            郁悶了兩天,終于找到答案.

            原程序:
            void bFile2str(String fpath, String& rStr){
            FILE* infile;
            infile = fopen(fpath.c_str(), "rb");
            if (infile == NULL) {
                MessageBox(NULL, to open"Fail file, please check your path ..." , "Error" , MB_ICONWARNING);
                return;
            }
               int cTemp;
            int i=1;
            cTemp = fgetc(infile);
            while (cTemp != EOF) {
                rStr = rStr + " ";
                rStr[i] = cTemp;
                cTemp = fgetc(infile);
                i ++;
            }
            fclose(infile);
            }

            后來(lái)改成:
            void bFile2str(String fpath, String& rStr){
            FILE* infile;
            infile = fopen(fpath.c_str(), "rb");
            if (infile == NULL) {
                MessageBox(NULL, "Fail to open file, please check your path ..." , "Error" , MB_ICONWARNING);
                return;
            }
               int cTemp;
            int i=1;
            cTemp = fgetc(infile);
            while (!feof(infile)) {
                rStr = rStr + " ";
                rStr[i] = cTemp;
                cTemp = fgetc(infile);
                i ++;
            }
            fclose(infile);
            }

            分析:
            EOF 是文件結(jié)束符, 當(dāng) fgetc 讀字符時(shí)遇到文件結(jié)束符時(shí), 將返回一個(gè)文件結(jié)束標(biāo)志 EOF(即-1). 如果是普通文本, 當(dāng)然可以用EOF來(lái)判斷是否已到文件尾, 但在二進(jìn)制文件中可能包含多個(gè) EOF 標(biāo)志符, 這時(shí)就會(huì)出現(xiàn)文件還沒(méi)讀完就被認(rèn)為文件已經(jīng)結(jié)束的情況. 而 feof() 就解決了這個(gè)問(wèn)題, 它可以用來(lái)測(cè)試當(dāng)前文件指針是否在文件尾, 它和 EOF 的機(jī)理完全不同, 當(dāng)然會(huì)跳過(guò)中間的許多 EOF 字符.

            丰满少妇人妻久久久久久| 欧美一级久久久久久久大| 色综合久久中文字幕无码| 香蕉久久av一区二区三区| 久久综合88熟人妻| 国产精品女同一区二区久久| 亚洲精品乱码久久久久久蜜桃| 狠狠色噜噜色狠狠狠综合久久| 久久国产乱子伦精品免费强| 久久久久亚洲精品中文字幕| 国产成人综合久久精品红| 色欲综合久久中文字幕网| 国产巨作麻豆欧美亚洲综合久久 | 久久人妻少妇嫩草AV无码专区| 91久久九九无码成人网站| 综合网日日天干夜夜久久| 色成年激情久久综合| 久久久久亚洲精品日久生情 | 亚洲精品午夜国产VA久久成人| 久久国产一片免费观看| 一本久久a久久精品亚洲| 2019久久久高清456| 久久er国产精品免费观看8| 日韩人妻无码一区二区三区久久| 狠狠色婷婷久久一区二区| 久久天天日天天操综合伊人av| 久久精品国产99国产精偷| 大伊人青草狠狠久久| 久久精品国产2020| 久久人人爽人人人人爽AV| 综合久久国产九一剧情麻豆| 婷婷久久综合九色综合九七| 日本精品久久久久中文字幕| 97久久超碰国产精品2021| 亚洲国产精品无码成人片久久| 久久久久久国产精品美女| 久久久久九国产精品| 久久久精品波多野结衣| 久久青青国产| 亚洲AV无码久久精品成人 | 欧美性猛交xxxx免费看久久久|