• <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 字符.

            久久精品国产只有精品2020| 亚洲国产另类久久久精品黑人| 久久亚洲精品中文字幕| 久久久久久久久久久久久久| 久久人妻少妇嫩草AV蜜桃| 国产一区二区精品久久岳| 国产成人香蕉久久久久| 777久久精品一区二区三区无码| 久久国产乱子精品免费女| 久久午夜电影网| 国产精品女同一区二区久久| 大美女久久久久久j久久| 精品久久久久国产免费| 精品久久久久成人码免费动漫| 国产精品乱码久久久久久软件| 中文字幕久久亚洲一区| 久久久久女人精品毛片| 久久久久国产精品| 香蕉久久永久视频| 久久精品中文騷妇女内射| 青青国产成人久久91网| 国产高潮国产高潮久久久91 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 欧美激情精品久久久久久久九九九| 一本一本久久a久久精品综合麻豆| 久久婷婷国产剧情内射白浆| 久久国产精品99精品国产| 久久国产成人亚洲精品影院| 亚洲精品乱码久久久久久按摩| 久久精品九九亚洲精品天堂| 无码人妻久久一区二区三区蜜桃| www性久久久com| 久久99热这里只有精品66| 国产精品一区二区久久精品| 亚洲性久久久影院| 久久久久一区二区三区| 亚洲中文字幕无码一久久区| 热RE99久久精品国产66热| 99久久er这里只有精品18| 香蕉99久久国产综合精品宅男自 | 99热成人精品热久久669|