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

            啤酒

            一個(gè)空白者

             

            2007年4月24日

            國(guó)家重點(diǎn)實(shí)驗(yàn)室名單


            國(guó)家重點(diǎn)實(shí)驗(yàn)室名單




             

            中國(guó)科學(xué)院

            模式識(shí)別實(shí)驗(yàn)室

            自動(dòng)化研究所
            金屬材料疲勞與斷裂實(shí)驗(yàn)室 金屬研究所
            傳感技術(shù)聯(lián)合實(shí)驗(yàn)室   電子所、冶金所、半導(dǎo)體所等
            超導(dǎo)實(shí)驗(yàn)室 物理所
            紅外物理實(shí)驗(yàn)室 上海技術(shù)物理研究所
            生物大分子實(shí)驗(yàn)室 生物物理研究所
            大氣數(shù)值模擬實(shí)驗(yàn)室 大氣物理研究所
            波譜與原子分子物理實(shí)驗(yàn)室 武漢物理研究所
            分子反應(yīng)動(dòng)力學(xué)實(shí)驗(yàn)室 大連化學(xué)物理研究所、化學(xué)所
            腐蝕科學(xué)實(shí)驗(yàn)室 金屬腐蝕與防護(hù)研究所
            科學(xué)與工程計(jì)算實(shí)驗(yàn)室 計(jì)算數(shù)學(xué)與科學(xué)工程計(jì)算所
            信息功能材料實(shí)驗(yàn)室 上海冶金所
            植物細(xì)胞與染色體工程實(shí)驗(yàn)室 遺傳所
            黃土高原土壤侵蝕與旱地農(nóng)業(yè)實(shí)驗(yàn)室 西北水土保持所
            農(nóng)業(yè)蟲害鼠害綜合治理實(shí)驗(yàn)室 動(dòng)物所
            煤炭轉(zhuǎn)化實(shí)驗(yàn)室 山西煤化所
            火災(zāi)科學(xué)實(shí)驗(yàn)室 中國(guó)科技大學(xué)
            瞬態(tài)光學(xué)技術(shù)實(shí)驗(yàn)室 西安光機(jī)所
            生化工程實(shí)驗(yàn)室 化冶所
            微生物資源前期開(kāi)發(fā)實(shí)驗(yàn)室 微生物所
            微細(xì)加工光學(xué)技術(shù)實(shí)驗(yàn)室 光電技術(shù)所
            工程塑料實(shí)驗(yàn)室 化學(xué)所
            半導(dǎo)體超晶格實(shí)驗(yàn)室 半導(dǎo)體研究所
            快速凝固非平衡合金實(shí)驗(yàn)室 金屬研究所
            聲場(chǎng)與聲信息實(shí)驗(yàn)室 聲學(xué)研究所
            淡水生態(tài)與生物技術(shù)實(shí)驗(yàn)室 水生生物研究所
            羰基合成和選擇氧化實(shí)驗(yàn)室 蘭州化物所
            大氣邊界層物理和化學(xué)實(shí)驗(yàn)室 大氣所
            分子動(dòng)態(tài)與穩(wěn)態(tài)結(jié)構(gòu)實(shí)驗(yàn)室 化學(xué)研究所、北大
            催化基礎(chǔ)實(shí)驗(yàn)室 大連化學(xué)物理研究所
            高性能陶瓷和超微結(jié)構(gòu)實(shí)驗(yàn)室 上海硅酸鹽研究所
            計(jì)劃生育生殖生物學(xué)實(shí)驗(yàn)室 動(dòng)物研究所
            表面物理實(shí)驗(yàn)室 物理研究所、半導(dǎo)體所
            植物分子遺傳實(shí)驗(yàn)室 上海植物生理研究所
            分子生物學(xué)實(shí)驗(yàn)室 上海生物化學(xué)研究所
            生命有機(jī)化學(xué)實(shí)驗(yàn)室 上海有機(jī)化學(xué)研究所
            氣體地球化學(xué)實(shí)驗(yàn)室 蘭州地質(zhì)研究所
            有機(jī)地球化學(xué)實(shí)驗(yàn)室 廣州地球化學(xué)研究所
            資源與環(huán)境信息系統(tǒng)實(shí)驗(yàn)室 地理研究所
            新藥研究實(shí)驗(yàn)室 上海藥物研究所
            結(jié)構(gòu)化學(xué)實(shí)驗(yàn)室 福建物質(zhì)結(jié)構(gòu)研究所
            凍土工程實(shí)驗(yàn)室 蘭州冰川凍土研究所
             

            教育部

            集成光電子學(xué)實(shí)驗(yàn)室 清華、吉大、半導(dǎo)體研究所
            化學(xué)工程聯(lián)合實(shí)驗(yàn)室 清華、天大、華東理工大學(xué)、浙大
            煤的燃燒實(shí)驗(yàn)室 華中理工大學(xué)
            毫米波實(shí)驗(yàn)室 東南大學(xué)
            應(yīng)用表面物理實(shí)驗(yàn)室 復(fù)旦大學(xué)
            材料復(fù)合新技術(shù)實(shí)驗(yàn)室 武漢工業(yè)大學(xué)
            高分子材料工程實(shí)驗(yàn)室 四川聯(lián)合大學(xué)
            晶體材料實(shí)驗(yàn)室 山東大學(xué)
            計(jì)算機(jī)輔助設(shè)計(jì)與圖行學(xué)實(shí)驗(yàn)室 浙江大學(xué)
            配位化學(xué)實(shí)驗(yàn)室 南京大學(xué)
            土木工程防災(zāi)實(shí)驗(yàn)室 同濟(jì)大學(xué)
            固體微結(jié)構(gòu)物理實(shí)驗(yàn)室 南京大學(xué)
            固體表面物理化學(xué)實(shí)驗(yàn)室 廈門大學(xué)
            智能技術(shù)與系統(tǒng)實(shí)驗(yàn)室 清華大學(xué)
            內(nèi)生金屬礦床成礦機(jī)制研究實(shí)驗(yàn)室 南京大學(xué)
            暴雨監(jiān)測(cè)和預(yù)測(cè)實(shí)驗(yàn)室 北京大學(xué)
            醫(yī)藥生物技術(shù)實(shí)驗(yàn)室 南京大學(xué)
            污染控制和資源化研究實(shí)驗(yàn)室 同濟(jì)大學(xué)、南京大學(xué)
            生物反應(yīng)器實(shí)驗(yàn)室 華東化工學(xué)院
            微生物技術(shù)實(shí)驗(yàn)室 山東大學(xué)
            生物防治實(shí)驗(yàn)室 中山大學(xué)
            河口海岸動(dòng)力沉積和動(dòng)力地貌綜合實(shí)驗(yàn)室 華東師范大學(xué)
            干旱農(nóng)業(yè)生態(tài)實(shí)驗(yàn)室 蘭州大學(xué)
            粉末冶金實(shí)驗(yàn)室 中南工業(yè)大學(xué)
            新型陶瓷與精細(xì)工藝實(shí)驗(yàn)室 清華大學(xué)
            凝固技術(shù)實(shí)驗(yàn)室 西北工業(yè)大學(xué)
            新金屬材料實(shí)驗(yàn)室 北京科技大學(xué)
            超硬材料實(shí)驗(yàn)室 吉林大學(xué)
            理論化學(xué)計(jì)算實(shí)驗(yàn)室 吉林大學(xué)
            吸咐分離功能高分子材料實(shí)驗(yàn)室 南開(kāi)大學(xué)
            染料、表面活性劑精細(xì)化工合成實(shí)驗(yàn)室 大連理工大學(xué)
            重質(zhì)油加工實(shí)驗(yàn)室 石油大學(xué)
            稀土材料化學(xué)及應(yīng)用實(shí)驗(yàn)室 北京大學(xué)
            近代聲學(xué)實(shí)驗(yàn)室 南京大學(xué)
            流體傳動(dòng)及控制實(shí)驗(yàn)室 浙江大學(xué)
            制漿造紙工程實(shí)驗(yàn)室 華南理工大學(xué)
            纖維材料改性實(shí)驗(yàn)室 中國(guó)紡織大學(xué)
            混凝土材料研究實(shí)驗(yàn)室 同濟(jì)大學(xué)
            軟件開(kāi)發(fā)環(huán)境實(shí)驗(yàn)室 北京航空航天大學(xué)
            現(xiàn)代光學(xué)儀器實(shí)驗(yàn)室 浙江大學(xué)
            精密測(cè)試技術(shù)及儀器實(shí)驗(yàn)室 天津大學(xué)、清華大學(xué)
            文字信息處理技術(shù)實(shí)驗(yàn)室 北京大學(xué)
            微波與數(shù)字通信技術(shù)實(shí)驗(yàn)室 清華大學(xué)
            程控交換技術(shù)與通信網(wǎng)實(shí)驗(yàn)室 北京郵電大學(xué)
            移動(dòng)與多點(diǎn)無(wú)線電通信系統(tǒng)實(shí)驗(yàn)室 東南大學(xué)
            區(qū)域光纖通信與相干光纖通信實(shí)驗(yàn)室 北京大學(xué)、上海交通大學(xué)
            綜合業(yè)務(wù)網(wǎng)理論及關(guān)健技術(shù)實(shí)驗(yàn)室 西安電子科技大學(xué)
            專用集成電路與系統(tǒng)實(shí)驗(yàn)室 復(fù)旦大學(xué)
            寬帶光纖傳輸與通信系統(tǒng)技術(shù)實(shí)驗(yàn)室 (成都)電子科技大學(xué)
            電力系統(tǒng)及大型發(fā)電設(shè)備安全實(shí)驗(yàn)室 清華大學(xué)
            牽引動(dòng)力實(shí)驗(yàn)室 西南交通大學(xué)
            現(xiàn)代焊接生產(chǎn)技術(shù)實(shí)驗(yàn)室 哈爾濱工業(yè)大學(xué)
            工業(yè)控制技術(shù)實(shí)驗(yàn)室 浙江大學(xué)
            汽車安全與節(jié)能實(shí)驗(yàn)室 清華大學(xué)
            振動(dòng)沖擊噪聲實(shí)驗(yàn)室 上海交通大學(xué)
            電力設(shè)備電氣絕緣實(shí)駿室 西安交通大學(xué)
            工業(yè)裝備結(jié)構(gòu)分析實(shí)驗(yàn)室 大連理工大學(xué)
            塑性成形模擬及模具技術(shù)實(shí)驗(yàn)室 華中理工大學(xué)
            軋制技術(shù)及連軋自動(dòng)化實(shí)驗(yàn)室 東北大學(xué)
            汽車動(dòng)態(tài)摸擬實(shí)驗(yàn)室 吉林工業(yè)大學(xué)
            機(jī)械制造系統(tǒng)工程實(shí)驗(yàn)室 西安交通大學(xué)
            爆炸災(zāi)害預(yù)防、控制實(shí)驗(yàn)室 北京理工大學(xué)
            生物膜與膜生物工程實(shí)驗(yàn)室 清華、北大、動(dòng)物所
            海洋工程實(shí)驗(yàn)室 上海交通大學(xué)
            人工微結(jié)構(gòu)和介觀物理實(shí)驗(yàn)室 北京大學(xué)
            遺傳工程實(shí)驗(yàn)室 復(fù)旦大學(xué)
            視覺(jué)聽(tīng)覺(jué)信息處理實(shí)驗(yàn)室 北京大學(xué)
            元素有機(jī)化學(xué)實(shí)驗(yàn)室 南開(kāi)大學(xué)
            應(yīng)用有機(jī)化學(xué)實(shí)驗(yàn)室 蘭州大學(xué)
            海岸和近海工程實(shí)驗(yàn)室 大連理工大學(xué)
            蛋白質(zhì)工程及植物基因工程實(shí)驗(yàn)室 北京大學(xué)
            激光技術(shù)實(shí)驗(yàn)室 華中理工大學(xué)
            煤的清潔燃燒技術(shù)實(shí)驗(yàn)室 清華大學(xué)
            計(jì)算機(jī)軟件新技術(shù)實(shí)驗(yàn)室 南京大學(xué)
            機(jī)械傳動(dòng)實(shí)驗(yàn)室 重慶大學(xué)
            動(dòng)力工程多相流實(shí)驗(yàn)室 西安交通大學(xué)
            硅材料科學(xué)實(shí)驗(yàn)室 浙江大學(xué)
            磨擦學(xué)實(shí)驗(yàn)室 清華大學(xué)
            機(jī)械結(jié)構(gòu)強(qiáng)度與振動(dòng)實(shí)驗(yàn)室 西安交通大學(xué)
            金屬材料強(qiáng)度實(shí)驗(yàn)室 西安交通大學(xué)
            金屬基復(fù)合材料實(shí)驗(yàn)室 上海交通大學(xué)
            高速水力學(xué)實(shí)驗(yàn)室 成都科技大學(xué)
            超快速激光光譜實(shí)驗(yàn)室 中山大學(xué)
             

            農(nóng)業(yè)部

            作物遺傳改良實(shí)驗(yàn)室 華中農(nóng)業(yè)大學(xué)
            農(nóng)業(yè)生物技術(shù)實(shí)驗(yàn)室 北京農(nóng)業(yè)大學(xué)
            植物病蟲害生物學(xué)實(shí)驗(yàn)室 中國(guó)農(nóng)科院植保所
            獸醫(yī)生物技術(shù)實(shí)驗(yàn)室 農(nóng)科院哈爾濱獸醫(yī)所
            熱帶作物生物技術(shù)實(shí)驗(yàn)室 華南熱作兩院
             

            衛(wèi)生部

            病毒基因工程實(shí)驗(yàn)室 預(yù)防醫(yī)科院病毒所
            天然藥物及仿生藥物實(shí)驗(yàn)室 北京醫(yī)科大學(xué)
            醫(yī)學(xué)遺傳學(xué)實(shí)驗(yàn)室 湖南醫(yī)科大學(xué)
            癌基因及相關(guān)基因?qū)嶒?yàn)室 上海市腫瘤所
            分子腫瘤學(xué)實(shí)驗(yàn)室 醫(yī)科院腫瘤所
            醫(yī)學(xué)神經(jīng)生物學(xué)實(shí)驗(yàn)室 上海醫(yī)科大學(xué)
            醫(yī)學(xué)分子生物學(xué)實(shí)驗(yàn)室 醫(yī)科院基礎(chǔ)所
            計(jì)劃生育藥具實(shí)驗(yàn)室 上海計(jì)劃生育研究所
            實(shí)驗(yàn)血液學(xué)實(shí)驗(yàn)室 醫(yī)科院血液所
             

            國(guó)家測(cè)繪局

            測(cè)繪遙感信息工程實(shí)驗(yàn)室 武漢測(cè)繪科技大學(xué)

            posted @ 2007-04-24 19:04 啤酒 閱讀(1003) | 評(píng)論 (0)編輯 收藏

            2002-2004年國(guó)內(nèi)80個(gè)一級(jí)學(xué)科高校排名(4)

                 摘要: 0803  光學(xué)工程   學(xué)位授予單位名稱 整體水平 分項(xiàng)指標(biāo) ...  閱讀全文

            posted @ 2007-04-24 18:42 啤酒 閱讀(382) | 評(píng)論 (0)編輯 收藏

            2002-2004年國(guó)內(nèi)80個(gè)一級(jí)學(xué)科高校排名(3)

                 摘要: 0802 機(jī)械工程   學(xué)位授予單位代碼及名稱 整體水平 分項(xiàng)指標(biāo) ...  閱讀全文

            posted @ 2007-04-24 18:39 啤酒 閱讀(566) | 評(píng)論 (0)編輯 收藏

            2002-2004年國(guó)內(nèi)80個(gè)一級(jí)學(xué)科高校排名(2)

                 摘要: 0704 天文學(xué)   學(xué)位授予單位名稱 整體水平 分項(xiàng)指標(biāo) ...  閱讀全文

            posted @ 2007-04-24 18:34 啤酒 閱讀(339) | 評(píng)論 (0)編輯 收藏

            2002-2004年國(guó)內(nèi)80個(gè)一級(jí)學(xué)科高校排名(1)

                 摘要: 0101 哲學(xué)   學(xué)位授予單位名稱 整體水平 分項(xiàng)指標(biāo) ...  閱讀全文

            posted @ 2007-04-24 18:30 啤酒 閱讀(319) | 評(píng)論 (0)編輯 收藏

            2006年國(guó)內(nèi)高校一級(jí)學(xué)科排名詳析

                 摘要: 一級(jí)學(xué)科代碼及名稱:0701 數(shù)學(xué) 排名 學(xué)校代碼及名稱 整體水平得分 1 ...  閱讀全文

            posted @ 2007-04-24 18:07 啤酒 閱讀(998) | 評(píng)論 (0)編輯 收藏

            關(guān)于"985"

            一、什么是“985工程”?

              1998年5月4日,江澤民總書記在慶祝北大建校100周年大會(huì)上向全社會(huì)宣告:“為了實(shí)現(xiàn)現(xiàn)代化,我國(guó)要有若干所具有世界先進(jìn)水平的一流大學(xué)。”為貫徹落實(shí)黨中央科教興國(guó)的戰(zhàn)略和江澤民同志的號(hào)召,教育部決定在實(shí)施“面向21世紀(jì)教育振興行動(dòng)計(jì)劃”中,重點(diǎn)支持北京大學(xué)、清華大學(xué)等部分高等學(xué)校創(chuàng)建世界一流大學(xué)和高水平大學(xué),簡(jiǎn)稱“985”工程。

              二、“985”工程高校名單:

              一期名單:(34所)
              清華大學(xué)
              北京大學(xué)
              中國(guó)科技大學(xué)
              南京大學(xué)
              復(fù)旦大學(xué)
              上海交通大學(xué)
              西安交通大學(xué)
              浙江大學(xué)
              哈爾濱工業(yè)大學(xué)
              南開(kāi)大學(xué)
              天津大學(xué)
              東南大學(xué)
              華中科技大學(xué)
              武漢大學(xué)
              廈門大學(xué)
              山東大學(xué)
              湖南大學(xué)
              中國(guó)海洋大學(xué)
              中南大學(xué)
              吉林大學(xué)
              北京理工大學(xué)
              大連理工大學(xué)
              北京航空航天大學(xué)
              重慶大學(xué)
              電子科技大學(xué)
              四川大學(xué)
              華南理工大學(xué)
              中山大學(xué)
              蘭州大學(xué)
              東北大學(xué)
              西北工業(yè)大學(xué)
              同濟(jì)大學(xué)
              北京師范大學(xué)
              中國(guó)人民大學(xué)

              二期名單:(4所)
              中國(guó)農(nóng)業(yè)大學(xué)
              國(guó)防科技大學(xué)
              中央民族大學(xué)
              西北農(nóng)林科技大學(xué)

            posted @ 2007-04-24 17:59 啤酒 閱讀(473) | 評(píng)論 (0)編輯 收藏

            1959年全國(guó)首批20所重點(diǎn)大學(xué)是哪20個(gè)和1997年國(guó)家批準(zhǔn)的全國(guó)首批22所“211工程”重點(diǎn)建設(shè)院校是哪22個(gè)?

            1959年全國(guó)首批20所重點(diǎn)大學(xué)是哪20個(gè)和1997年國(guó)家批準(zhǔn)的全國(guó)首批22所“211工程”重點(diǎn)建設(shè)院校是哪22個(gè)?

            中國(guó)大學(xué)最新權(quán)威排名:
            一、排行要素
            1、國(guó)家重視程度(各個(gè)時(shí)期的重點(diǎn)大學(xué)、國(guó)家投資力度)、實(shí)驗(yàn)室裝備、對(duì)國(guó)家的貢獻(xiàn)
            2、學(xué)術(shù)水平(論文)、學(xué)科精品度
            3、師資力量(博士的比例、來(lái)自名牌大學(xué)的比例、敬業(yè)精神及精神面貌、工作業(yè)績(jī)及在全國(guó)同類學(xué)科同行中的地位) 、博導(dǎo)規(guī)模及效率
            4、新生入學(xué)成績(jī)、教學(xué)質(zhì)量
            5、學(xué)校的文化、理念、學(xué)風(fēng)、校風(fēng)
            6、各個(gè)不同的歷史時(shí)期的狀況進(jìn)行加權(quán)分析---歷史(權(quán)重10%)、現(xiàn)狀(80%)和未來(lái)發(fā)展(10%)綜合權(quán)衡。

            二、中國(guó)的大學(xué)權(quán)威排名:
            清華、北大、中科大、人大、南京大學(xué)、復(fù)旦、上交大、哈工大、浙大、西交大、*北航、*北理工、北師大、南開(kāi)、同濟(jì)、天大、西工大、華科、東南、大工、武大、中大、北郵、蘭大、川大、吉大、山大。 (*注:北理與北航非常接近, 文字方式的排名無(wú)法并列,北航在社會(huì)上名聲稍大,再加上70-90年代被貶為部屬院校的二十多年北航受影響較小,就把北航放在前面吧!)

            淺談北理與北航的名氣:
            北理VS北航這是一個(gè)非常敏感的問(wèn)題,俗話說(shuō):同行是冤家.
            1、50年代--"文革"前,不相上下。北航名字響亮,北理國(guó)防尖端、延安來(lái)的學(xué)校也頗具魅力。1965年北理的招生宣傳力度突然加大、一反常態(tài)、形象由神神兮兮、羞羞答答、扎根串聯(lián),變?yōu)槔碇睔鈮?、大張旗鼓、牛氣十足。招生?jiǎn)章也由一張寥寥數(shù)行文字的類草紙一下子變成了紙張?zhí)貏e精致、篇幅極大、內(nèi)容頗具震撼力(北理直屬國(guó)防部、國(guó)防科委領(lǐng)導(dǎo))的精品。據(jù)說(shuō)這一巨大變化是因?yàn)楫?dāng)時(shí)主持工作的主要負(fù)責(zé)人不是長(zhǎng)期從事地下工作的魏院長(zhǎng)而是多年帶兵打仗的時(shí)*。這一下子,較大地提高了北理的影響。1965年在北京考區(qū),北理的錄取線僅低于清華、科大。據(jù)說(shuō)(負(fù)責(zé)招生的老師唐**)在陜西北理也是第三名。然而好景不長(zhǎng),1966年6月份“文革”就開(kāi)始了。
            2、“文革”中,北航紅旗名揚(yáng)天下。
            3、1972年--直至1996年恢復(fù)國(guó)防科工委院校:雖然同被流放為部屬院校,但北航是航空部,北理是兵器部,航空(盡管有許多大三線廠)的牌子依然閃亮,兵器的牌子卻同山溝、三線、陳舊的字眼連到了一起。據(jù)說(shuō)直到現(xiàn)在,一些四川(因四川的三線廠太多)考生的家長(zhǎng)一提到北理就嚇的臉變色,心跳加速(*純屬神經(jīng)病,現(xiàn)在的北理早已大大超越了兵器部的范圍,尤其是市場(chǎng)經(jīng)濟(jì)的今天,你的孩子只要有本事、留北京、去上海、深圳易如反掌,甚至去美國(guó)也是不難辦到的)。北理尖端、神秘的光環(huán)徹底失去了。在與北航的角逐中北理一直處于下風(fēng)。幸虧北理還有國(guó)家“七五”“八五”14所重點(diǎn)建設(shè)大學(xué)的這塊牌子,再加上地處北京,因此還不至于太狼狽。還幸虧80年代(從1983年后)冒出了個(gè)北工大,因畢業(yè)生出路好、可留北京;90年代冒出(1998年前)個(gè)北郵因?qū)I(yè)好,在北京壓著北航,使北理與北航差距沒(méi)怎么拉開(kāi)。盡管如此,北航的名氣一直在北理之上。
            4、1996年后:1996年恢復(fù)國(guó)防科工委院校,北理專業(yè)發(fā)展出現(xiàn)轉(zhuǎn)機(jī),經(jīng)費(fèi)支持也有了可靠保障,名聲也好聽(tīng)了,北理的處境好多了。1995年第一批15所進(jìn)入211工程,由中央財(cái)政廳直接撥款;2000年第十所進(jìn)入985工程,成為國(guó)家重點(diǎn)中的重點(diǎn)。然而北理的名聲一直在北航之下,1998年北航取代了北郵的位置。
            原因有三:(1)北航改名為航空航天大學(xué),航天是高科技、從2000年起,科技人員待遇特別高,而且航天在北京的研究院特別多。北航又擅長(zhǎng)宣傳、造輿論,因此知名度越來(lái)越高。
            (2)北理在70年代--1996年的二十年中名聲大損、銳氣大傷、學(xué)科發(fā)展受到相當(dāng)?shù)挠绊懀M管實(shí)力仍然十分強(qiáng)勁,但北理的傳統(tǒng),不擅長(zhǎng)輿論,“文革”前的導(dǎo)彈領(lǐng)頭羊,北理校友群為中國(guó)航天作出重大貢獻(xiàn),至今連個(gè)航天學(xué)院都沒(méi)有,真令人費(fèi)解、莫名其妙!金牌子你不掛,究竟為何?難道你就沒(méi)有意識(shí)到你的“文化”、“理念”有點(diǎn)落伍了么?既然這樣就怪不得你的名氣總在北航之下。
            (3)形形色色排行榜的不良影響。1-3個(gè)人操作的形形色色的排行榜,他們中年輕者起哄、炒作、惡作劇。年長(zhǎng)者(50幾歲)為了暴利和其他更深遠(yuǎn)的目的和企圖進(jìn)行投機(jī),興風(fēng)作浪、招搖撞騙、呼風(fēng)喚雨、點(diǎn)石成金、輿論鋪天蓋地、大有重新造化世界、重新安排山河、當(dāng)教育界太上皇的架勢(shì)。這決非駭人聽(tīng)聞,因?yàn)樗ㄎ洌┑淖鞣ê退呐判邪竦妮浾摿Χ仍缫汛蟠蟪雠判邪駪?yīng)有的“度”,已成為世人關(guān)注的教育腐敗的一個(gè)產(chǎn)物,成為教育界的一匹害群之馬,大大損害了教育界的形象,成為教育界的一大公害。武術(shù)連的逆社會(huì)的心理障礙和極大的野心,促使他對(duì)北理痛下殺手,對(duì)北理排名過(guò)低,也一定程度上損害了北理的聲譽(yù)。武術(shù)連的名言“一切從數(shù)據(jù)出發(fā)”。武術(shù)連這只過(guò)街老鼠,由于他的貪心、野心、投機(jī)、低能、弱智、不學(xué)無(wú)術(shù),他也只能炮制出一個(gè)對(duì)大學(xué)排行的“大肚子評(píng)價(jià)體系”,這個(gè)大肚子體系本身就是反科學(xué)的,在眾目睽睽下早已現(xiàn)出“白骨精”的原形,因此武術(shù)連的所謂數(shù)據(jù),也只不過(guò)是貼到白骨精身上的一堆丑肉、爛肉,沒(méi)有絲毫價(jià)值。烏鴉的翅膀擋不住太陽(yáng)的光輝,北理正在乘第十所進(jìn)入985工程(2+8)的強(qiáng)勁東風(fēng),發(fā)生日新月異的變化,正在為創(chuàng)建世界知名、國(guó)內(nèi)一流高等學(xué)府而努力拼搏、重振昔日京工的輝煌指日可待。

            2 中國(guó)大學(xué)最新權(quán)威排名介紹

            北航與北理不該是冤家,而應(yīng)是戰(zhàn)友,是平等競(jìng)爭(zhēng)的爭(zhēng)創(chuàng)世界知名大學(xué)的國(guó)家代表隊(duì)中的隊(duì)友。
            自1952年至2000年,中共中央、中央政府、教育部一共公布了七次"重點(diǎn)大學(xué)"或"重點(diǎn)建設(shè)首批"名單,取其交集,集中于下述十所(即"2+8"十所) 名校,他們無(wú)愧堪稱為"重點(diǎn)中的重點(diǎn)"。
            "2"-世界一流;"8"-世界知名,按如下順序:
            北方:清華、北大、北理工、哈工大、西交
            南方:南大、復(fù)旦、上交、浙大、中科大
            再加上北航、天大、南開(kāi)、人大、北師大這五所,共計(jì)十五所大學(xué)組成當(dāng)今中國(guó)高校的國(guó)家隊(duì)。

            中國(guó)的重點(diǎn)大學(xué)

            一、六所重點(diǎn)大學(xué):
            1954年12月,教育部在《關(guān)于重點(diǎn)高等學(xué)校和專家工作范圍的決議》中,指定以下6所學(xué)校為全國(guó)性重點(diǎn)大學(xué): 中國(guó)人民大學(xué)、北京大學(xué)、清華大學(xué)、北京農(nóng)業(yè)大學(xué)、北京醫(yī)學(xué)院、哈爾濱工業(yè)大學(xué)。

            二、十六所重點(diǎn)大學(xué):
            1959年3月22日,中共中央發(fā)出《關(guān)于在高等學(xué)校中指定一批重點(diǎn)學(xué)校的決定》,指定以下16所高校為全國(guó)重點(diǎn)大學(xué):
            北京大學(xué)、中國(guó)人民大學(xué)、清華大學(xué)、中國(guó)科技大學(xué)、北京工業(yè)學(xué)院(北京理工大學(xué))、北京航空學(xué)院(北京航空航天大學(xué))、北京農(nóng)業(yè)大學(xué)、北京醫(yī)學(xué)院(北京醫(yī)科大學(xué))、北京師范大學(xué)、天津大學(xué)、哈爾濱工業(yè)大學(xué)、復(fù)旦大學(xué)、上海交通大學(xué)、華東師范大學(xué)、上海第一醫(yī)學(xué)院、西安交通大學(xué)。

            三、 1959年8月28日又增加4所重點(diǎn)大學(xué):
            協(xié)和醫(yī)科大學(xué)、哈爾濱軍事工程學(xué)院、第四軍醫(yī)大學(xué)、軍事通訊工程學(xué)院。

            四.六十四所重點(diǎn)大學(xué)(16+4+44):
            1960年10月22日,中央決定在原來(lái)20所(16+4)重點(diǎn)大學(xué)的基礎(chǔ)上,再增加44所重點(diǎn)大學(xué):
            1、文理(蘇式綜合大學(xué)): 吉林大學(xué)、南開(kāi)大學(xué)、南京大學(xué)、武漢大學(xué)、中山大學(xué)、四川大學(xué)、山東大學(xué)、山東海洋學(xué)院(理科)、蘭州大學(xué)、
            2、工科: 大連工學(xué)院、東北工學(xué)院、南京工學(xué)院、華南工學(xué)院、華中工學(xué)院、重慶大學(xué)、西北工業(yè)大學(xué)、合肥工業(yè)大學(xué)、
            3、專門性大學(xué):北京石油學(xué)院、北京地質(zhì)學(xué)院、北京郵電學(xué)院、北京鋼鐵學(xué)院、北京礦業(yè)學(xué)院、北京鐵道學(xué)院、北京化工學(xué)院、唐山鐵道學(xué)院、吉林工業(yè)大學(xué)、大連海運(yùn)學(xué)院、華東水利學(xué)院、華東化工學(xué)院、華東紡織工學(xué)院、同濟(jì)大學(xué)、武漢水電學(xué)院、中南礦冶學(xué)院、成都電訊工程學(xué)院、北京農(nóng)機(jī)化學(xué)院、北京林學(xué)院、北京中醫(yī)學(xué)院、中山醫(yī)學(xué)院、北京外國(guó)語(yǔ)學(xué)院、國(guó)際關(guān)系學(xué)院、北京政法學(xué)院、北京對(duì)外貿(mào)易學(xué)院、中央音樂(lè)學(xué)院、北京體育學(xué)院

            五、 1963年9月12日,教育部通知增加3所重點(diǎn)大學(xué):
            浙江大學(xué)、廈門大學(xué)、上海外國(guó)語(yǔ)學(xué)院

            六、 1963年10月24日,教育部通知增加1所重點(diǎn)大學(xué):
            南京農(nóng)學(xué)院
            *至此,全國(guó)重點(diǎn)高校共68所。

            七、1978年全國(guó)88所重點(diǎn)大學(xué):
            1978年國(guó)務(wù)院確定了北京大學(xué)、清華大學(xué)等88所院校為全國(guó)性重點(diǎn)大學(xué),因太多,在此不予列舉。

            八、“七五”、“八五”期間國(guó)家重點(diǎn)建設(shè)的高校(15所)
            北京大學(xué)、清華大學(xué)、復(fù)旦大學(xué)、西安交通大學(xué)、上海交通大學(xué)、中國(guó)科技大學(xué)、北京醫(yī)科大學(xué)、中國(guó)人民大學(xué)、北京師范大學(xué)、中國(guó)農(nóng)業(yè)大學(xué)、北京理工大學(xué)、哈爾濱工業(yè)大學(xué)、西北工業(yè)大學(xué)、北京航空航天大學(xué)、國(guó)防科學(xué)技術(shù)大學(xué)

            九、首批正式設(shè)立研究生院的高校22所
            1978年,經(jīng)國(guó)務(wù)院批準(zhǔn)成立中國(guó)科技大學(xué)研究生院。
            1984年8月,經(jīng)國(guó)務(wù)院批準(zhǔn)22所高校首批試辦研究生院:北京大學(xué)、中國(guó)人民大學(xué)、清華大學(xué)、北京理工大學(xué)、北京航空航天大學(xué)、北京科技大學(xué)、北京農(nóng)業(yè)大學(xué)、北京醫(yī)科大學(xué)、北京師范大學(xué)、天津大學(xué)、南開(kāi)大學(xué)、哈爾濱工業(yè)大學(xué)、吉林大學(xué)、復(fù)旦大學(xué)、上海交通大學(xué)、浙江大學(xué)、南京大學(xué)、武漢大學(xué)、華中理工大學(xué)、國(guó)防科學(xué)技術(shù)大學(xué)、西安交通大學(xué)、上海醫(yī)科大學(xué)。
            十.1986年第二批試辦研究生院的高校10所:
            1986年4月經(jīng)國(guó)務(wù)院批準(zhǔn)10所高校試辦研究生院: 中山大學(xué)、東南大學(xué)、東北大學(xué)、大連理工大學(xué)、廈門大學(xué)、華東師范大學(xué)、中國(guó)地質(zhì)大學(xué)、西北工業(yè)大學(xué)、同濟(jì)大學(xué)、中國(guó)協(xié)和醫(yī)科大學(xué)。



            因北京醫(yī)科大學(xué)和上海醫(yī)科大學(xué)分別合并到北京大學(xué)和復(fù)旦大學(xué),目前實(shí)際只有31所研究生院(1+22+10-2=31)。

            十一、2000年第三批試辦研究生院的高校22所:
            2000年6月教育部又批準(zhǔn)了北方交通大學(xué)等22所高校試辦研究生院:北方交通大學(xué)、北京郵電大學(xué)、北京林業(yè)大學(xué)、東北師范大學(xué)、華東理工大學(xué)、南京航空航天大學(xué)、南京理工大學(xué)、中國(guó)礦業(yè)大學(xué)、南京農(nóng)業(yè)大學(xué)、山東大學(xué)、石油大學(xué)、湖南大學(xué)、中南大學(xué)、華南理工大學(xué)、四川大學(xué)、重慶大學(xué)、西南交通大學(xué)、電子科技大學(xué)、西安電子科技大學(xué)、蘭州大學(xué)、第二軍醫(yī)大學(xué)、第四軍醫(yī)大學(xué)。
            2002年5月,教育部批準(zhǔn)了哈爾濱工程大學(xué)、海河大學(xué)2所大學(xué)試辦研究生院。后來(lái)又批準(zhǔn)西北農(nóng)林科技大學(xué)試辦研究生院。
            至此全國(guó)總共有56所(31+22+2+1=56)研究生院。

            十二、2004年教育部指定全國(guó)34所考研自行確定復(fù)試錄取線的高校
            北京大學(xué) 清華大學(xué) 中國(guó)人民大學(xué) 北京航空航天大學(xué) 北京理工大學(xué) 天津大學(xué) 南開(kāi)大學(xué) 中國(guó)農(nóng)業(yè)大學(xué) 北京師范大學(xué)上海交通大學(xué) 大連理工大學(xué) 中國(guó)科學(xué)技術(shù)大學(xué) 復(fù)旦大學(xué) 哈爾濱工業(yè)大學(xué) 吉林大學(xué) 同濟(jì)大學(xué) 南京大學(xué) 華中科技大學(xué) 西安交通大學(xué) 東北大學(xué) 東南大學(xué) 浙江大學(xué) 華南理工大學(xué) 西北工業(yè)大學(xué) 廈門大學(xué) 湖南大學(xué) 武漢大學(xué) 蘭州大學(xué) 電子科技大學(xué) 中山大學(xué) 中南大學(xué) 重慶大學(xué) 山東大學(xué) 四川大學(xué)

            十三、首批擁有教授任職資格審批權(quán)的高校(32所)
            北京大學(xué)、清華大學(xué)、中國(guó)人民大學(xué)、北京理工大學(xué)、北京航空航天大學(xué)、北京師范大學(xué)、中國(guó)協(xié)和醫(yī)科大學(xué)、北京醫(yī)科大學(xué)、北京農(nóng)業(yè)大學(xué)、北京科技大學(xué)、南開(kāi)大學(xué)、天津大學(xué)、哈爾濱工業(yè)大學(xué)、吉林大學(xué)、大連理工大學(xué)、東北大學(xué)、復(fù)旦大學(xué)、上海交通大學(xué)、同濟(jì)大學(xué)、上海醫(yī)科大學(xué)、華東師范大學(xué)、南京大學(xué)、東南大學(xué)、浙江大學(xué)、中國(guó)科技大學(xué)、廈門大學(xué)、武漢大學(xué)、華中理工大學(xué)、中國(guó)地質(zhì)大學(xué)、中山大學(xué)、西安交通大學(xué)、西北工業(yè)大學(xué)。

            十四、31所副部長(zhǎng)級(jí)大學(xué)(14+7+11-1=31)
            (一) 1992年中央指定:14所書記、校長(zhǎng)職務(wù)由中央管理的高校:北京大學(xué)、 清華大學(xué)、 中國(guó)人民大學(xué)、 北京理工大學(xué)、 北京航空航天大學(xué) 、北京師范大學(xué)、中國(guó)農(nóng)業(yè)大學(xué) 、北京醫(yī)科大學(xué)、中國(guó)科技大學(xué)、 復(fù)旦大學(xué)、 上海交通大學(xué)、 西安交通大學(xué)、 哈爾濱工業(yè)大學(xué)、 西北工業(yè)大學(xué)14所高校的黨委書記、校長(zhǎng)職務(wù)由中央直接任命,書記和校長(zhǎng)享受副部級(jí)待遇。
            (二)、2000年增加7所:南京大學(xué) 浙江大學(xué) 南開(kāi)大學(xué) 天津大學(xué) 武漢大學(xué) 四川大學(xué) 中山大學(xué)
            (三)、2003年12月再新增11所 :吉林大學(xué)、大連理工大學(xué)、同濟(jì)大學(xué)、東南大學(xué)、廈門大學(xué)、中南大學(xué)、 華中科技大學(xué)、重慶大學(xué)、山東大學(xué)、蘭州大學(xué)、西北農(nóng)林科技大學(xué)。
            (四)、迄今為止,全國(guó)副部級(jí)高校總共31所,(*注:北京醫(yī)科大學(xué)已并入北京大學(xué),因此14+7+11-1=31)

            十五、1995年第一批入選“211工程”的15所
            1995年12月,第一批入選“211工程”的大學(xué)共15所:北京大學(xué)、清華大學(xué)、北京理工大學(xué)、北京航空航天大學(xué)、中國(guó)農(nóng)業(yè)大學(xué)、復(fù)旦大學(xué)、上海交通大學(xué)、西安交通大學(xué)、哈爾濱工業(yè)大學(xué)、中國(guó)科技大學(xué)、南開(kāi)大學(xué)、天津大學(xué)、南京大學(xué)、浙江大學(xué)、西北工業(yè)大學(xué)。
            十六、2003年,教育部公布的入選“211工程”的95所大學(xué)名單
            繼1995年,第一批入選“211工程”的15所大學(xué)之后, 1996年中國(guó)人民大學(xué)等院校及1997年北京科技大學(xué)等院校和隨后1998年等等一批又一批的大學(xué)進(jìn)入“211工程”,使入選“211”工程大學(xué)總共達(dá)到95所。2003年教育部公布的這95所大學(xué)的名單如下:
            北京大學(xué)、中國(guó)人民大學(xué)、清華大學(xué)、北京交通大學(xué)、北京工業(yè)大學(xué)、北京航空航天大學(xué)、北京理工大學(xué)、北京科技大學(xué)、北京化工大學(xué)、北京郵電大學(xué)、中國(guó)農(nóng)業(yè)大學(xué)、北京林業(yè)大學(xué)、北京中醫(yī)藥大學(xué)、北京師范大學(xué)、北京外國(guó)語(yǔ)大學(xué)、北京廣播學(xué)院、對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)、中央民族大學(xué)、中央音樂(lè)學(xué)院、南開(kāi)大學(xué)、天津大學(xué)、天津醫(yī)科大學(xué)、河北工業(yè)大學(xué)、太原理工大學(xué)、內(nèi)蒙古大學(xué)、遼寧大學(xué)、大連理工大學(xué)、東北大學(xué)、大連海事大學(xué)、吉林大學(xué)、延邊大學(xué)、東北師范大學(xué)、哈爾濱工業(yè)大學(xué)、哈爾濱工程大學(xué)、東北農(nóng)業(yè)大學(xué)、復(fù)旦大學(xué)、同濟(jì)大學(xué)、上海交通大學(xué)、華東理工大學(xué)、東華大學(xué)、上海第二醫(yī)科大學(xué)、華東師范大學(xué)、上海外國(guó)語(yǔ)大學(xué)、上海財(cái)經(jīng)大學(xué)、上海大學(xué)、南京大學(xué)、蘇州大學(xué)、東南大學(xué)、南京航空航天大學(xué)、南京理工大學(xué)、中國(guó)礦業(yè)大學(xué)、河海大學(xué)、江南大學(xué)、南京農(nóng)業(yè)大學(xué)、中國(guó)藥科大學(xué)、南京師范大學(xué)、浙江大學(xué)、安徽大學(xué)、中國(guó)科學(xué)技術(shù)大學(xué)、廈門大學(xué)、福州大學(xué)、南昌大學(xué)、山東大學(xué)、中國(guó)海洋大學(xué)、石油大學(xué)、鄭州大學(xué)、武漢大學(xué)、華中科技大學(xué)、中國(guó)地質(zhì)大學(xué)、武漢理工大學(xué)、湖南大學(xué)、中南大學(xué)、湖南師范大學(xué)、中山大學(xué)、暨南大學(xué)、華南理工大學(xué)、華南師范大學(xué)、廣西大學(xué)、四川大學(xué)、重慶大學(xué)、西南交通大學(xué)、電子科技大學(xué)、四川農(nóng)業(yè)大學(xué)、西南財(cái)經(jīng)大學(xué)、云南大學(xué)、西北大學(xué)、西安交通大學(xué)、西北工業(yè)大學(xué)、西安電子科技大學(xué)、長(zhǎng)安大學(xué)、蘭州大學(xué)、新疆大學(xué)、第二軍醫(yī)大學(xué)、第四軍醫(yī)大學(xué)、國(guó)防科學(xué)技術(shù)大學(xué)

            十七、進(jìn)入“985工程”大學(xué)
            第一部分: 已進(jìn)入“985工程”大學(xué)所簽署的重點(diǎn)建設(shè)協(xié)議對(duì)各高校的定位及資助經(jīng)費(fèi)總量
            1998年12月24日,教育部制訂的《面向21世紀(jì)教育振興行動(dòng)計(jì)劃》將“若干所”正式列入其中,明確指出“創(chuàng)建若干所具有世界先進(jìn)水平的一流大學(xué)和一批一流學(xué)科”。
            依據(jù)國(guó)家教育部和各省、市及部委所簽訂的合同,根據(jù)合同書對(duì)各學(xué)校的定位及資金資助情況(三年內(nèi)撥款經(jīng)費(fèi)總量),按照共建合同簽約時(shí)間,分列如下:
            1. 目標(biāo)定位:“世界一流大學(xué)”
            北京大學(xué) 18億 (教育部撥款)
            清華大學(xué) 18億 (教育部撥款)
            2. 目標(biāo)定位:“國(guó)內(nèi)一流、國(guó)際知名高水平大學(xué)”
            浙江大學(xué) 14億 (7億+7億)(教育部撥款+省撥款) 1999年11月8日
            南京大學(xué) 12億 (6億+6億)(教育部撥款+省撥款) 1999年7月26日
            復(fù)旦大學(xué) 12億 (6億+6億)(教育部撥款+市撥款) 1999年7月27日
            上海交通大學(xué) 12億 (6億+6億)(教育部撥款+市撥款) 1999年7月27日
            中國(guó)科技大學(xué) 9億 (3億+3億+3億)(教育部撥款+中科院撥款+省撥款)1999年7月25 日
            西安交通大學(xué) 9億 (6億+3億)(教育部撥款+省撥款) 1999年9月11日
            哈爾濱工業(yè)大學(xué) 10億 (3億+3億+4億)(教育部撥款+國(guó)防科工委撥款+省撥款)1999年11月14日
            北京理工大學(xué) 10億 (3億+3億+4億)(教育部撥款+國(guó)防科工委撥款+市撥款)2000月 9月23日
            北京師范大學(xué) 12億 (6億+6億) (教育部撥款+市撥款)2002月8月24日

            *以上的大學(xué)即所謂的“2”+“9”工程,是國(guó)家投資建設(shè)大學(xué)的重中之重。
            中國(guó)人民大學(xué)“國(guó)際知名的世界一流大學(xué)”(雖已簽約、但經(jīng)費(fèi)未公布)

            3. 目標(biāo)定位:“國(guó)內(nèi)外知名的高水平大學(xué)”
            依據(jù)中央資助經(jīng)費(fèi)經(jīng)費(fèi)情況分列如下:
            1) 中央資助經(jīng)費(fèi)為3億以上(不含3億)的大學(xué):
            北京航空航天大學(xué) 9億 (3億+3億+3億)(教育部撥款+國(guó)防科工委撥款+市撥款)2001
            年9月23日
            西北工業(yè)大學(xué) 9億 (3億+3億+3億)(教育部撥款+國(guó)防科工委撥款+陜西省、西安市
            以土地等形式) 2002年1月22日
            南開(kāi)大學(xué)、天津大學(xué) 兩校共14億 (教育部撥款+市撥款) 2000年12月25日
            武漢大學(xué) 8億 (4億+4億)(教育部撥款+省撥款) 2001年2月13日
            四川大學(xué) 7.2億 (4億+3.2億) (教育部撥款+省撥款) 2001年9月29日
            吉林大學(xué) 7億 (4億+3億) (教育部撥款+省撥款) 2001年2月22日

            2) 中央資助經(jīng)費(fèi)為3億的大學(xué):
            中山大學(xué) 12億 (3億+9億) (教育部撥款+省撥款) 2001年10月26日
            山東大學(xué) 8億 (3億+5億) (教育部撥款+省撥款) 2001年2月26日
            東南大學(xué) 6億 (3億+3億) (教育部撥款+省撥款) 2001年2月12日
            華中科技大學(xué) 6億 (3億+3億) (教育部撥款+湖北省、武漢市以資金、項(xiàng)目等形式) 2001年2月13日
            廈門大學(xué) 6億 (3億 +1.5億+1.5億)(教育部撥款+福建省撥款+廈門市撥款)2001年2月22日
            同濟(jì)大學(xué) 6億 (3億+3億) (教育部撥款+市撥款) 2002年6月26日
            重慶大學(xué) 5.4億 (3億+2.4億) (教育部撥款+市撥款) 2001年9月28日
            蘭州大學(xué) 4.5億 (3億+1.5億+土地)(教育部撥款+省撥款) 2001年12月9日

            3) 中央資助經(jīng)費(fèi)為2億的大學(xué):
            中南大學(xué) 4億 (2億+2億) (教育部撥款+省撥款) 2001年2月27日
            湖南大學(xué) 4億 (2億+2億) (教育部撥款+省撥款) 2001年2月27日
            大連理工大學(xué) 4億 (2億+2億) (教育部撥款+遼寧省、大連市撥款) 2001年8月8日
            華南理工大學(xué) 4億 (2億+2億) (教育部撥款+省撥款) 2001年10月26日
            東北大學(xué) 4億 (2億+1億+1億)(教育部撥款+省撥款+沈陽(yáng)市撥款) 2002年1月23日
            成都電子科技大學(xué) 3.6億 (2億+1.6億) (教育部撥款+省撥款) 2001年9月29日
            中國(guó)海洋大學(xué) 3億 (教育部、山東省、中國(guó)海洋局、青島市總撥款額)2001年2月27日
            *2004年,又有中國(guó)農(nóng)業(yè)大學(xué),國(guó)防科技大學(xué),中央民族大學(xué),西北農(nóng)林科技大學(xué)進(jìn)入“985工程”的行列,使“985工程”大學(xué)總數(shù)達(dá)到38所(34+4)。

            十八、國(guó)家重點(diǎn)投資建設(shè)的十所重中之重大學(xué)
            自1952年至2000年,中共中央、中央政府、教育部一共公布了七次"重點(diǎn)大學(xué)"或"重點(diǎn)建設(shè)首批"名單,取其交集,集中于下述十所(即"2+8"十所) 名校,他們無(wú)愧堪稱為"重點(diǎn)中的重點(diǎn)"。
            "2"-世界一流;"8"-世界知名,按如下順序:
            北方:清華、北大、北理工、哈工大、西交
            南方:南大、復(fù)旦、上交、浙大、中科大

            *十九、教育部直屬大學(xué)
            從1952年起,教育部指定了一批又一批的大學(xué)為教育部直屬的(重點(diǎn))大學(xué),如北大、清華、人大、復(fù)旦等。70年代末,只有不到30所,然而從90年代中后期起,急劇擴(kuò)編,至今已有72所大學(xué)納入教育部直屬大學(xué)。這些大學(xué)只是教育部直屬的,他們中有的納入全國(guó)重點(diǎn)大學(xué)(如全國(guó)六所、十六所、六十四所、八十八所重點(diǎn)大學(xué),211工程95所重點(diǎn)大學(xué),985工程38所重點(diǎn)大學(xué)),有的則不屬于全國(guó)重點(diǎn)大學(xué)。到目前為止,仍有十幾所教育部直屬大學(xué)未納入國(guó)家211工程(即不屬于國(guó)家重點(diǎn)大學(xué))。因此教育部直屬大學(xué)與全國(guó)性重點(diǎn)大學(xué)是兩個(gè)不同的概念,不可混為一談。
            當(dāng)然全國(guó)的著名的重點(diǎn)大學(xué)主要集中教育部直屬大學(xué)這個(gè)集團(tuán),除外還有直屬中科院和國(guó)防科工委的中國(guó)科技大學(xué)、哈爾濱工業(yè)大學(xué)、北京理工大學(xué)、北京航空航天大學(xué)、西北工業(yè)大學(xué)。

            72所教育部直屬大學(xué)名單:
            清華大學(xué) 北京大學(xué) 中國(guó)人民大學(xué) 北京科技大學(xué)
            北京化工大學(xué) 北京師范大學(xué) 北京外國(guó)語(yǔ)大學(xué) 北京語(yǔ)言文化大學(xué)
            南開(kāi)大學(xué) 天津大學(xué) 東北大學(xué) 大連理工大學(xué)
            吉林大學(xué) 中南財(cái)經(jīng)政法大學(xué) 東北師范大學(xué) 復(fù)旦大學(xué)
            上海交通大學(xué) 同濟(jì)大學(xué) 華東理工大學(xué) 西安電子科技大學(xué)
            華東師范大學(xué) 上海外國(guó)語(yǔ)大學(xué) 南京大學(xué) 東南大學(xué)
            無(wú)錫輕工大學(xué) 合肥工業(yè)大學(xué) 浙江大學(xué) 廈門大學(xué)
            山東大學(xué) 青島海洋大學(xué) 武漢大學(xué) 西南交通大學(xué)
            中國(guó)地質(zhì)大學(xué) 華中師范大學(xué) 湖南大學(xué) 中國(guó)藥科大學(xué)
            中山大學(xué) 華南理工大學(xué) 蘭州大學(xué) 電子科技大學(xué)
            四川大學(xué) 重慶大學(xué) 西南師范大學(xué) 西安交通大學(xué)
            陜西師范大學(xué) 西南財(cái)經(jīng)大學(xué) 西北農(nóng)林科技大學(xué) 對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)
            石油大學(xué) 北京郵電大學(xué) 中國(guó)農(nóng)業(yè)大學(xué) 北京林業(yè)大學(xué)
            北京廣播學(xué)院 河海大學(xué) 中國(guó)政法大學(xué) 中央音樂(lè)學(xué)院
            中國(guó)礦業(yè)大學(xué) 上海財(cái)經(jīng)大學(xué) 東北林業(yè)大學(xué) 華中農(nóng)業(yè)大學(xué)
            南京農(nóng)業(yè)大學(xué) 東華大學(xué) 中央戲劇學(xué)院 長(zhǎng)安大學(xué)
            北方交通大學(xué) 華中科技大學(xué) 中南大學(xué) 中央財(cái)經(jīng)大學(xué)
            武漢理工大學(xué) 中央美術(shù)學(xué)院 北京中醫(yī)藥大學(xué) 華北電力大學(xué)

            *二十、國(guó)防科委院校
            國(guó)防科工委院校是規(guī)模僅次于教育部直屬院校的另一個(gè)大學(xué)集團(tuán)。1952年,中共中央指定北京工業(yè)學(xué)院(北京理工大學(xué))、哈爾濱工業(yè)大學(xué)、北京航空學(xué)院(北京航空航天大學(xué))、上海交通大學(xué)四所大學(xué)為國(guó)防院校。
            國(guó)防院校后來(lái)又改名為國(guó)防科委院校。從50年代后期,先后又有西北工大、成都電訊、南航加入到國(guó)防院校的行列,至1963年我國(guó)共有八所國(guó)防科委院校:哈爾濱工業(yè)大學(xué)(船舶 & 綜和)、北京理工大學(xué)(導(dǎo)彈 & 坦克)、北京航空航天大學(xué)(飛機(jī) & 導(dǎo)彈)、上海交通大學(xué)(船舶&火車)、西北工業(yè)大學(xué)(飛機(jī)&導(dǎo)彈 & 船舶)、成都電訊工程學(xué)院(電子)、南京航空航天大學(xué)(飛機(jī))、太原機(jī)械學(xué)院(兵器--現(xiàn)在的中北大學(xué))
            1966年,國(guó)防科委院校在上述八大院校的基礎(chǔ)上又增加了哈軍工、西軍電、南炮工。
            七十年代初國(guó)防科委院校解散,哈工大、上海交大及哈船工(原哈軍工的海軍系)分到船舶部。北航、西工大、南航分到航空部。北理工、南京理工大學(xué)(即南炮工)分到兵器部。電子科大(成都電訊)、西安電子科大(西軍電)被分到電子部。隨后,哈工大轉(zhuǎn)到航天部;上海交大轉(zhuǎn)到教育部;電子科大、西安電子科大分到電子部后來(lái)又歸到信息產(chǎn)業(yè)部。哈軍工的主體改名為國(guó)防科技大學(xué),1989年歸總參領(lǐng)導(dǎo)。
            1996年,恢復(fù)國(guó)防科工委院校。只有七所:哈工大、北航、北理工、西工大、南理工、南航、哈船工。該七所國(guó)防科工委院校全是211工程大學(xué);其中哈工大、北理工、北航、西工大是首批15所進(jìn)入211工程的大學(xué),而且也是排在靠前位置的985工程大學(xué)。

            *二十一、國(guó)防院校十分重要的地位
            1、50-60年代四所國(guó)防院校全部納入國(guó)家重點(diǎn)扶植的10所大學(xué)(清華、北大、復(fù)旦、西交大、中科大、哈軍工、哈工大、北理工、北航、上海交大)。
            2、1959年中共中央指定16所重點(diǎn)大學(xué),國(guó)防院校就占了4所(哈工大、北理工、北航、上海交大)。
            3、70年代末,國(guó)務(wù)院批準(zhǔn)了第一批向聯(lián)合國(guó)教科文組織貸款的10所大學(xué)中,國(guó)防院校也占有4所:清華、北大、復(fù)旦、上交大、西交大、中科大、國(guó)防科大、哈工大、北理工、北航。
            4、1983年,中國(guó)在聯(lián)合國(guó)備案的14所重點(diǎn)大學(xué)國(guó)防院校占了4所:國(guó)防科技大學(xué)、哈工大、北理工、北航。
            5、“七五”、“八五”期間國(guó)家重點(diǎn)建設(shè)的高校15所,國(guó)防院校也占了5(4+1)所:國(guó)防科技大學(xué)、哈工大、北理工、北航、西工大(后補(bǔ)上的)。
            6、1995年,第一批入選“211工程”的大學(xué)共15所:國(guó)防院校也占了4所(哈工大、北航、北理工、西工大)
            7、1992年中央指定的14所書記、校長(zhǎng)職務(wù)由中央管理的高校中(即副部長(zhǎng)級(jí)),國(guó)防院校也占4所(哈工大、北航、北理工、西工大)。
            8、1999年開(kāi)始的985工程,獲取中央資助在6億(含6億)以上,且總資助在9億(含9億)以上的大學(xué)13所,國(guó)防院校也占了4所(哈工大、北理工、北航、西工大)。

            posted @ 2007-04-24 17:55 啤酒 閱讀(6091) | 評(píng)論 (1)編輯 收藏

            2006年9月7日

            帶有界面的“讀取日志”! 不知道哪位會(huì)作分析,算法不會(huì)呀!只讀沒(méi)意思呀

            // Read_EventDlg.cpp : implementation file
            //

            #include "stdafx.h"
            #include "Read_Event.h"
            #include "Read_EventDlg.h"
            #include "DescriptionDiaLog.h"

            #ifdef _DEBUG
            #define new DEBUG_NEW
            #undef THIS_FILE
            static char THIS_FILE[] = __FILE__;
            #endif

            /////////////////////////////////////////////////////////////////////
            //int event_auditsucceed_num;??//記錄審核成功記錄的個(gè)數(shù)
            //int event_info_num;????//記錄信息記錄的個(gè)數(shù)
            //int event_error_num;????//記錄錯(cuò)誤記錄的個(gè)數(shù)?
            //int event_warn_num;????//記錄警告記錄的個(gè)數(shù)
            //int event_auditdefeat_num;??//記錄審核失敗的個(gè)數(shù)

            //char *event_category;?????//事件類
            //char *event_sourcename=NULL;???//事件來(lái)源
            //char *event_computername=NULL;??//事件計(jì)算機(jī)名
            //char *event_descriptive_msg=NULL;??//事件描述
            //char event_el_user[257];????//事件用戶
            //char event_el_domain[257];???//事件域
            //char host_final_out_msg[1024];??//最后輸出的信息

            FILE *fp;????????//保存的文件
            int hh=0;????????//記錄類型的標(biāo)志,用于位圖的選擇
            int event_record=0;??????//事件記錄的個(gè)數(shù)
            os_el el[1];
            int nItem=0;???????//對(duì)于索引記錄的當(dāng)前標(biāo)志
            int istype=0;???????//用于事件類型的標(biāo)志
            BOOL issub;????????//一個(gè)開(kāi)關(guān)項(xiàng)
            /////////////////////////////////////////////////////////////////////////////
            // CAboutDlg dialog used for App About

            class CAboutDlg : public CDialog
            {
            public:
            ?CAboutDlg();

            // Dialog Data
            ?//{{AFX_DATA(CAboutDlg)
            ?enum { IDD = IDD_ABOUTBOX };
            ?//}}AFX_DATA

            ?// ClassWizard generated virtual function overrides
            ?//{{AFX_VIRTUAL(CAboutDlg)
            ?protected:
            ?virtual void DoDataExchange(CDataExchange* pDX);??? // DDX/DDV support
            ?//}}AFX_VIRTUAL

            // Implementation
            protected:
            ?//{{AFX_MSG(CAboutDlg)
            ?//}}AFX_MSG
            ?DECLARE_MESSAGE_MAP()
            };

            CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
            {
            ?//{{AFX_DATA_INIT(CAboutDlg)
            ?//}}AFX_DATA_INIT
            }

            void CAboutDlg::DoDataExchange(CDataExchange* pDX)
            {
            ?CDialog::DoDataExchange(pDX);
            ?//{{AFX_DATA_MAP(CAboutDlg)
            ?//}}AFX_DATA_MAP
            }

            BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
            ?//{{AFX_MSG_MAP(CAboutDlg)
            ??// No message handlers
            ?//}}AFX_MSG_MAP
            END_MESSAGE_MAP()

            /////////////////////////////////////////////////////////////////////////////
            // CRead_EventDlg dialog

            CRead_EventDlg::CRead_EventDlg(CWnd* pParent /*=NULL*/)
            ?: CDialog(CRead_EventDlg::IDD, pParent)
            {
            ?//{{AFX_DATA_INIT(CRead_EventDlg)
            ?m_mm_host_state = _T("");
            ?//}}AFX_DATA_INIT
            ?// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
            ?m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

            }

            void CRead_EventDlg::DoDataExchange(CDataExchange* pDX)
            {
            ?CDialog::DoDataExchange(pDX);
            ?//{{AFX_DATA_MAP(CRead_EventDlg)
            ?DDX_Control(pDX, IDC_LIST, m_mm_host_ListCtrl);
            ?DDX_Text(pDX, IDC_STATE, m_mm_host_state);
            ?//}}AFX_DATA_MAP
            }

            BEGIN_MESSAGE_MAP(CRead_EventDlg, CDialog)
            ?//{{AFX_MSG_MAP(CRead_EventDlg)
            ?ON_WM_SYSCOMMAND()
            ?ON_WM_PAINT()
            ?ON_WM_QUERYDRAGICON()
            ?ON_BN_CLICKED(IDC_SECURE, OnSecure)
            ?ON_BN_CLICKED(IDC_SYSTEM, OnSystem)
            ?ON_BN_CLICKED(IDC_APPLICATION, OnApplication)
            ?ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
            ?ON_BN_CLICKED(IDC_DELETE, OnDelete)
            ?ON_BN_CLICKED(IDC_DETAIL, OnDetail)
            ?ON_BN_CLICKED(IDC_SAVE, OnSave)
            ?ON_BN_CLICKED(IDC_SAVEHARD, OnSave_Hard)
            ?//}}AFX_MSG_MAP
            END_MESSAGE_MAP()

            /////////////////////////////////////////////////////////////////////////////
            // CRead_EventDlg message handlers

            BOOL CRead_EventDlg::OnInitDialog()
            {
            ?CDialog::OnInitDialog();

            ?// Add "About..." menu item to system menu.

            ?// IDM_ABOUTBOX must be in the system command range.
            ?ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
            ?ASSERT(IDM_ABOUTBOX < 0xF000);

            ?CMenu* pSysMenu = GetSystemMenu(FALSE);
            ?if (pSysMenu != NULL)
            ?{
            ??CString strAboutMenu;
            ??strAboutMenu.LoadString(IDS_ABOUTBOX);
            ??if (!strAboutMenu.IsEmpty())
            ??{
            ???pSysMenu->AppendMenu(MF_SEPARATOR);
            ???pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
            ??}
            ?}

            ?// Set the icon for this dialog.? The framework does this automatically
            ?//? when the application's main window is not a dialog
            ?SetIcon(m_hIcon, TRUE);???// Set big icon
            ?SetIcon(m_hIcon, FALSE);??// Set small icon
            ?
            ?// TODO: Add extra initialization here
            ?

            //////////////////////////我加的///////////////////////

            ?issub=false;
            ?//給各項(xiàng)事件數(shù)目初始化
            ?Set_EventNum();???????

            ?m_mm_host_ListCtrl.SetRedraw(FALSE);
            ??? //更新內(nèi)容
            ??? m_mm_host_ListCtrl.SetRedraw(TRUE);
            ??? m_mm_host_ListCtrl.Invalidate();
            ??? m_mm_host_ListCtrl.UpdateWindow();
            ?//刪除所有的列
            ?m_mm_host_ListCtrl.DeleteAllItems();


            ?//給圖表初始化
            ?Init_ImageList();
            ?//設(shè)置m_mm_host_ListCtrl風(fēng)格
            ?LONG lStyle;
            ??? lStyle = GetWindowLong(m_mm_host_ListCtrl.m_hWnd, GWL_STYLE);//獲取當(dāng)前窗口style
            ??? lStyle &= ~LVS_TYPEMASK; //清除顯示方式位
            ??? lStyle |= LVS_REPORT; //設(shè)置style
            ??? SetWindowLong(m_mm_host_ListCtrl.m_hWnd, GWL_STYLE, lStyle);//設(shè)置style
            ?
            ??? DWORD dwStyle = m_mm_host_ListCtrl.GetExtendedStyle();
            ??? dwStyle |= LVS_EX_FULLROWSELECT;//選中某行使整行高亮(只適用與report風(fēng)格的listctrl)
            ??? dwStyle |= LVS_EX_GRIDLINES;//網(wǎng)格線(只適用與report風(fēng)格的listctrl)
            ??? dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
            ?dwStyle |=LVS_EX_HEADERDRAGDROP;
            ?dwStyle |=LVS_EX_SUBITEMIMAGES;
            ??? m_mm_host_ListCtrl.SetExtendedStyle(dwStyle); //設(shè)置擴(kuò)展風(fēng)格


            ?//插入列
            ?m_mm_host_ListCtrl.InsertColumn(0,"日志序號(hào)",LVCFMT_CENTER,60,0);
            ?m_mm_host_ListCtrl.InsertColumn(1,"分類",LVCFMT_CENTER,80,4);
            ?m_mm_host_ListCtrl.InsertColumn(2,"來(lái)源",LVCFMT_CENTER,80,1);
            ?m_mm_host_ListCtrl.InsertColumn(3,"日期",LVCFMT_CENTER,80,2);
            ?m_mm_host_ListCtrl.InsertColumn(4,"時(shí)間",LVCFMT_CENTER,80,3);
            ?m_mm_host_ListCtrl.InsertColumn(5,"ID",LVCFMT_CENTER,50,5);
            ?m_mm_host_ListCtrl.InsertColumn(6,"用戶",LVCFMT_CENTER,120,6);
            ?m_mm_host_ListCtrl.InsertColumn(7,"計(jì)算機(jī)",LVCFMT_CENTER,120,7);
            ?m_mm_host_ListCtrl.InsertColumn(8,"描述",LVCFMT_CENTER,250,7);
            //////////////////////////我加的///////////////////////


            ?return TRUE;? // return TRUE? unless you set the focus to a control
            }

            void CRead_EventDlg::OnSysCommand(UINT nID, LPARAM lParam)
            {
            ?if ((nID & 0xFFF0) == IDM_ABOUTBOX)
            ?{
            ??CAboutDlg dlgAbout;
            ??dlgAbout.DoModal();
            ?}
            ?else
            ?{
            ??CDialog::OnSysCommand(nID, lParam);
            ?}
            }

            // If you add a minimize button to your dialog, you will need the code below
            //? to draw the icon.? For MFC applications using the document/view model,
            //? this is automatically done for you by the framework.

            void CRead_EventDlg::OnPaint()
            {
            ?if (IsIconic())
            ?{
            ??CPaintDC dc(this); // device context for painting

            ??SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

            ??// Center icon in client rectangle
            ??int cxIcon = GetSystemMetrics(SM_CXICON);
            ??int cyIcon = GetSystemMetrics(SM_CYICON);
            ??CRect rect;
            ??GetClientRect(&rect);
            ??int x = (rect.Width() - cxIcon + 1) / 2;
            ??int y = (rect.Height() - cyIcon + 1) / 2;

            ??// Draw the icon
            ??dc.DrawIcon(x, y, m_hIcon);
            ?}
            ?else
            ?{
            ??CDialog::OnPaint();
            ?}
            }

            // The system calls this to obtain the cursor to display while the user drags
            //? the minimized window.

            HCURSOR CRead_EventDlg::OnQueryDragIcon()
            {
            ?return (HCURSOR) m_hIcon;
            }
            ///////////////////////////////////////////////////////////
            void CRead_EventDlg::OnSecure()
            {
            ?// TODO: Add your control notification handler code here
            ?UpdateData(TRUE);
            ?Set_EventNum();
            ?m_mm_host_state=_T("安全日志列表");
            ?Win_startel("Security");
            ?istype=1;
            ?UpdateData(FALSE);
            }
            ////////////////////////////////////////////////////////////
            void CRead_EventDlg::OnSystem()
            {
            ?// TODO: Add your control notification handler code here
            ?UpdateData(TRUE);
            ?Set_EventNum();
            ?m_mm_host_state=_T("系統(tǒng)日志列表");
            ?Win_startel("System");
            ?istype=2;
            ?UpdateData(FALSE);
            }
            ///////////////////////////////////////////////////////////
            void CRead_EventDlg::OnApplication()
            {
            ?// TODO: Add your control notification handler code here
            ?UpdateData(TRUE);
            ?Set_EventNum();
            ?m_mm_host_state=_T("應(yīng)用日志列表");
            ?Win_startel("Application");
            ?istype=3;
            ?UpdateData(FALSE);
            }
            ////////////////////////////////////////////////////////////
            char* CRead_EventDlg::El_GetCategory(int category_id)
            {
            ?//得到事件記錄的類型并且返回
            ?char *cat;
            ?if(!issub)
            ?{
            ??switch(category_id)
            ??{
            ???case EVENTLOG_AUDIT_SUCCESS:
            ????cat = "審核成功";
            ????event_auditsucceed_num++;
            ????hh=1;
            ????break;
            ???case EVENTLOG_INFORMATION_TYPE:
            ????cat = "信息";
            ????event_info_num++;
            ????hh=2;
            ????break;
            ???case EVENTLOG_ERROR_TYPE:
            ????cat = "錯(cuò)誤";
            ????event_error_num++;
            ????hh=3;
            ????break;
            ???case EVENTLOG_WARNING_TYPE:
            ????cat = "警告";
            ????event_warn_num++;
            ????hh=4;
            ????break;
            ???case EVENTLOG_AUDIT_FAILURE:
            ????cat = "審核失敗";
            ????event_auditdefeat_num++;
            ????hh=5;
            ????break;
            ???default:
            ????cat = "Unknown";
            ????break;
            ??}
            ?}
            ?else
            ?{
            ??switch(category_id)
            ??{
            ???case EVENTLOG_AUDIT_SUCCESS:
            ????cat = "審核成功";
            ????hh=1;
            ????break;
            ???case EVENTLOG_INFORMATION_TYPE:
            ????cat = "信息";
            ????hh=2;
            ????break;
            ???case EVENTLOG_ERROR_TYPE:
            ????cat = "錯(cuò)誤";
            ????hh=3;
            ????break;
            ???case EVENTLOG_WARNING_TYPE:
            ????cat = "警告";
            ????hh=4;
            ????break;
            ???case EVENTLOG_AUDIT_FAILURE:
            ????cat = "審核失敗";
            ????hh=5;
            ????break;
            ???default:
            ????cat = "Unknown";
            ????break;
            ??}
            ?}
            ???
            ??? return(cat);
            }
            ////////////////////////////////////////////////////////////////
            int CRead_EventDlg::El_getEventDLL(char *evt_name, char *event_sourcename1, char *event)
            {
            ?HKEY key;
            ??? DWORD ret;
            ??? char keyname[256];


            ??? keyname[255] = '\0';

            ??? _snprintf(keyname, 254,
            ??????????? "System\\CurrentControlSet\\Services\\EventLog\\%s\\%s",
            ??????????? evt_name,
            ??????????? event_sourcename1);

            ??? // 打開(kāi)注冊(cè)表Opening registry ????
            ??? if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyname, 0, KEY_ALL_ACCESS, &key)
            ??????????? != ERROR_SUCCESS)
            ??? {
            ??????? return(0);???
            ??? }


            ??? ret = MAX_PATH -1;?
            ??? if (RegQueryValueEx(key, "EventMessageFile", NULL,
            ??????????????? NULL, (LPBYTE)event, &ret) != ERROR_SUCCESS)
            ??? {
            ??????? event[0] = '\0';?
            ??????? return(0);
            ??? }

            ??? RegCloseKey(key);
            ??? return(1);
            }
            ////////////////////////////////////////////////////////////////
            char* CRead_EventDlg::El_GetMessage(EVENTLOGRECORD *er, char *event_name, char *event_sourcename2, LPTSTR *el_sstring)
            {
            ?DWORD fm_flags = 0;
            ??? char tmp_str[257];
            ??? char event[MAX_PATH +1];
            ??? char *curr_str;
            ??? char *next_str;
            ??? LPSTR message = NULL;

            ??? HMODULE hevt;

            ??? // Initializing variables
            ??? event[MAX_PATH] = '\0';
            ??? tmp_str[256] = '\0';

            ??? //Flags for format event
            ??? fm_flags |= FORMAT_MESSAGE_FROM_HMODULE;
            ??? fm_flags |= FORMAT_MESSAGE_ALLOCATE_BUFFER;
            ??? fm_flags |= FORMAT_MESSAGE_ARGUMENT_ARRAY;

            ??? //Get the file name from the registry (stored on event)
            ??? if(!El_getEventDLL(event_name, event_sourcename2, event))
            ??? {
            ??????? return(NULL);????
            ??? }????

            ??? curr_str = event;

            ??? // If our event has multiple libraries, try each one of them?
            ??? while((next_str = strchr(curr_str, ';')))
            ??? {
            ??????? *next_str = '\0';
            ??????? next_str++;

            ??????? ExpandEnvironmentStrings(curr_str, tmp_str, 255);
            ??????? hevt = LoadLibraryEx(tmp_str, NULL, DONT_RESOLVE_DLL_REFERENCES);
            ??????? if(hevt)
            ??????? {
            ??????????? if(!FormatMessage(fm_flags, hevt, er->EventID,
            ??????????????????????? 0,
            ??????????????????????? (LPTSTR) &message, 0, el_sstring))
            ??????????? {
            ??????????????? message = NULL;???
            ??????????? }
            ??????????? FreeLibrary(hevt);

            ??????????? /* If we have a message, we can return it */
            ??????????? if(message)
            ??????????????? return(message);
            ??????? }

            ??????? curr_str = next_str;??
            ??? }

            ??? ExpandEnvironmentStrings(curr_str, tmp_str, 255);
            ??? hevt = LoadLibraryEx(tmp_str, NULL, DONT_RESOLVE_DLL_REFERENCES);
            ??? if(hevt)
            ??? {
            ??????? int hr;???
            ??????? if(!(hr = FormatMessage(fm_flags, hevt, er->EventID,
            ??????????????????????? 0,
            ??????????????????????? (LPTSTR) &message, 0, el_sstring)))
            ??????? {
            ??????????? message = NULL;???
            ??????? }
            ??????? FreeLibrary(hevt);

            ??????? /* If we have a message, we can return it */
            ??????? if(message)
            ??????????? return(message);
            ??? }

            ??? return(NULL);
            }
            /////////////////////////////////////////////////////////////////
            BOOL CRead_EventDlg::Init_ImageList()
            {
            ?//給圖表初始化設(shè)置
            ??HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 6, 1);
            ??m_cImageListNormal.Attach(hList);
            ?
            ??hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 6, 1);
            ??m_cImageListSmall.Attach(hList);

            ??// Load the large icons
            ??CBitmap cBmp;
            ?
            ??cBmp.LoadBitmap(IDB_BITMAP1);
            ??m_cImageListNormal.Add(&cBmp, RGB(255,0, 255));
            ??cBmp.DeleteObject();
            ?
            ??// Load the small icons
            ??cBmp.LoadBitmap(IDB_BITMAP2);
            ??m_cImageListSmall.Add(&cBmp, RGB(255,0, 255));
            ?
            ??// Attach them
            ??m_mm_host_ListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
            ??m_mm_host_ListCtrl.SetImageList(&m_cImageListSmall, LVSIL_SMALL);
            ?
            ??return TRUE;
            }
            ///////////////////////////////////////////////////////////////
            void CRead_EventDlg::Insert_Record()
            {
            ?//在列表中插入列表項(xiàng)
            ?CString str;?
            ?LVITEM lvi;

            ?lvi.mask =? LVIF_TEXT;
            ?lvi.iItem = event_record;
            ?str.Format(_T("%d"),event_record+1);
            ?lvi.iSubItem = 0;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.InsertItem(&lvi);


            ?str.Format(_T("%s"), event_category);
            ?lvi.iSubItem = 1;
            ?lvi.mask =? LVIF_IMAGE | LVIF_TEXT;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?//選擇位圖??
            ?switch(hh)
            ?{
            ?case 0:
            ??lvi.iImage = 0;?
            ??break;
            ?case 1:
            ??lvi.iImage = 1;
            ??break;
            ?case 2:
            ??lvi.iImage = 2;
            ??break;
            ?case 3:
            ??lvi.iImage = 3;
            ??break;
            ?case 4:
            ??lvi.iImage = 4;
            ??break;
            ?default:
            ??lvi.iImage = 5;
            ??break;
            ?}
            ?
            ?m_mm_host_ListCtrl.SetItem(&lvi);

            ?//輸出來(lái)源??
            ?str.Format(_T("%s"),event_sourcename);
            ?lvi.iSubItem = 2;
            ?lvi.mask = LVIF_TEXT;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            ?//輸出日期??
            ?tm? *event_time = localtime((const? long? *)&el->er->TimeWritten);
            ?str.Format(_T("%4hd-%2hd-%2hd"),event_time->tm_year + 1900,event_time->tm_mon + 1,event_time->tm_mday);
            ?lvi.iSubItem = 3;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            ?//輸出時(shí)間??
            ?str.Format(_T("%.2hd:%.2hd:%.2hd"),event_time->tm_hour,event_time->tm_min,event_time->tm_sec);
            ?lvi.iSubItem = 4;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);

            ?//輸出ID
            ?str.Format(_T("%d"),(WORD)el->er->EventID);
            ?lvi.iSubItem = 5;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            ?//輸出用戶??
            ?str.Format(_T("%s/%s"),event_el_domain,event_el_user);
            ?lvi.iSubItem = 6;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            ?//輸出計(jì)算機(jī)??
            ?str.Format(_T("%s"),event_computername);
            ?lvi.iSubItem = 7;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            ?//輸出描述
            ?str.Format(_T("%s"),event_descriptive_msg);
            ?lvi.iSubItem = 8;
            ?lvi.pszText = (LPTSTR)(LPCTSTR)(str);
            ?m_mm_host_ListCtrl.SetItem(&lvi);
            }
            ///////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
            {
            ?//當(dāng)鼠標(biāo)在類別中點(diǎn)擊時(shí),返回被點(diǎn)中的記錄號(hào)
            ?// TODO: Add your control notification handler code here
            ?nItem = -1;
            ?LPNMITEMACTIVATE lpNMItemActivate = (LPNMITEMACTIVATE)pNMHDR;

            ?if(lpNMItemActivate != NULL)
            ?{
            ??nItem = lpNMItemActivate->iItem+1;
            ?}
            ?
            ?*pResult = 0;
            }
            //////////////////////////////////////////////////////////////
            void CRead_EventDlg::OnDelete()
            {
            ?//刪除被選中的記錄
            ?// TODO: Add your control notification handler code here
            ?//判斷是否選擇了日志類型,如果沒(méi)有退出
            ?if ((istype!=1)&&(istype!=2)&&(istype!=3))
            ?{
            ??MessageBox("請(qǐng)選擇日志類型!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return ;
            ?}
            ?//判斷是否選中了記錄,如果沒(méi)有退出
            ?if (nItem==0)
            ?{
            ??MessageBox("請(qǐng)選擇日志記錄!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return ;
            ?}

            ?int i,iState;
            ?int nItemSelected=m_mm_host_ListCtrl.GetSelectedCount();//得到所選表項(xiàng)數(shù)
            ?int nItemCount=m_mm_host_ListCtrl.GetItemCount();//得到表項(xiàng)總數(shù)
            ?
            ?//如果沒(méi)有選中,退出
            ?if(nItemSelected<1)
            ?{
            ??MessageBox("請(qǐng)選擇日志記錄!","警告!",MB_OK|MB_ICONEXCLAMATION);?
            ??return; ?
            ?}

            ?//對(duì)選中的記錄進(jìn)行刪除
            ?for(i=nItemCount-1;i>=0;i--)
            ?{

            ??iState=m_mm_host_ListCtrl.GetItemState(i,LVIS_SELECTED);

            ??if(iState!=0)
            ??{
            ???m_mm_host_ListCtrl.DeleteItem(i);
            ???nItem=0;
            ??}??
            ?}
            ?
            ?if (((istype!=1)&&(istype!=2)&&(istype!=3)))
            ?{
            ??MessageBox("請(qǐng)選擇日志類型!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return ;
            ?}


            }
            //////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::OnDetail()
            {
            ?//按鈕響應(yīng)函數(shù)
            ?//判斷是否選中類型,沒(méi)有就退出
            ?if ((istype!=1)&&(istype!=2)&&(istype!=3))
            ?{
            ??MessageBox("請(qǐng)選擇日志類型!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return ;
            ?}
            ?//判斷選中記錄,沒(méi)有就退出
            ?if (nItem==0)
            ?{
            ??MessageBox("請(qǐng)選擇日志記錄!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return ;
            ?}
            ?//如果選中類型就調(diào)用DescriptionDiaLog對(duì)話框
            ?if ((istype==1)||(istype==2)||(istype==3))
            ?{
            ??DescriptionDiaLog DescriptionDlg;
            ??DescriptionDlg.DoModal();
            ?}
            ?
            ?else
            ?{
            ??MessageBox("請(qǐng)選擇日志類型!","警告!",MB_OK|MB_ICONINFORMATION);

            ??return ;
            ?}

            ?// TODO: Add your control notification handler code here

            }
            /////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::OnSave()
            {
            ?// TODO: Add your control notification handler code here
            ?//對(duì)日志進(jìn)行列表保存
            ?//判斷列表是否有記錄
            ?switch(istype)
            ?{
            ?case 1:
            ??break;
            ?case 2:
            ??break;
            ?case 3:
            ??break;
            ?default:
            ??MessageBox("請(qǐng)選擇日志類型","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return;
            ? ?}
            ?//得到列表中記錄的總數(shù)
            ?event_record=m_mm_host_ListCtrl.GetItemCount();
            ?//對(duì)日志進(jìn)行保存
            ?//保存單個(gè)記錄
            ?CString sFileName;
            ?sFileName.Format("");

            ?CFileDialog dlg(FALSE, "txt", sFileName,
            ?????OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
            ?????"文本文件(*.txt)|*.txt|文本文件(*.doc)|*.doc||", this);?
            ?if (nItem!=0)
            ?{
            ??if(IDCANCEL == (MessageBox("您確定要保存一個(gè)日志記錄?","提示!",MB_OKCANCEL|MB_ICONQUESTION)))
            ??{
            ???nItem=0;
            ???return;
            ??}
            ??if (dlg.DoModal() == IDOK)
            ??{
            ???dlg.m_ofn.lpstrTitle = _T("保存日志記錄");
            ???CString fileName = dlg.GetPathName();
            ???fp = fopen(fileName,"w");
            ???Save_Single_Record(nItem);

            ??}
            ??nItem=0;
            ??return ;
            ?}

            ?///////////////////////////////////
            ?//保存整個(gè)列表記錄
            ?if(IDCANCEL==(MessageBox("您確定要保存日志文件?","提示!",MB_OKCANCEL|MB_ICONQUESTION)))
            ?{
            ??nItem=0;
            ??return;
            ?}


            ?if (dlg.DoModal() == IDOK)
            ?{
            ??dlg.m_ofn.lpstrTitle = _T("保存日志文件");
            ??CString fileName = dlg.GetPathName();

            ??fp = fopen(fileName,"w");
            ??switch(istype)
            ??{
            ??case 1:
            ???Save_Security();
            ???break;
            ??case 2:
            ???Save_System();
            ???break;
            ??case 3:
            ???Save_Application();
            ???break;
            ??default:
            ???MessageBox("請(qǐng)選擇日志類型","警告!",MB_OK|MB_ICONEXCLAMATION);
            ???return;
            ? ??}

            ?}
            }
            //////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Read_event(os_el *el, int printit)
            {
            ?//讀取日志
            ?DWORD nstr;
            ??? DWORD user_size;
            ??? DWORD domain_size;
            ??? DWORD read, needed;
            ??? int size_left;
            ??? int str_size;

            ??? char *mbuffer[BUFFER_SIZE];
            ??? LPSTR sstr = NULL;
            ?//int i=0;
            ?char *tmp_str = NULL;


            ?char el_string[1025];
            ??? LPSTR el_sstring[57];

            ??? //Er must point to the mbuffer
            ??? el->er = (EVENTLOGRECORD *) &mbuffer;

            ??? /* Zeroing the last values */
            ??? el_string[1024] = '\0';
            ??? event_el_user[256] = '\0';
            ??? event_el_domain[256] = '\0';
            ??? host_final_out_msg[1023] = '\0';
            ??? el_sstring[56] = NULL;
            ?//判斷是否有記錄
            ?if( my_host_IsListCtrl == true)
            ?{
            ??my_host_IsListCtrl = false;
            ??m_mm_host_ListCtrl.DeleteAllItems();
            ?}

            ??? //讀日志記錄???
            ??? while(ReadEventLog(el->h,
            ??????????????? EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,
            ??????????????? 0,
            ??????????????? el->er, BUFFER_SIZE -1, &read, &needed))
            ??? {

            ??????? while(read > 0)
            ??????? {


            ???//得到事件的類型
            ??????????? event_category = El_GetCategory(el->er->EventType);
            ???//得到事件來(lái)源
            ??????????? event_sourcename = (LPSTR) ((LPBYTE) el->er + sizeof(EVENTLOGRECORD));
            ???//得到計(jì)算機(jī)名
            ??????????? event_computername = event_sourcename + strlen(event_sourcename) + 1;
            ???//給描述信息初始化
            ??????????? event_descriptive_msg = NULL;


            ??????????? // 初始化domain/user尺寸
            ??????????? user_size = 255; domain_size = 255;
            ??????????? event_el_domain[0] = '\0';
            ??????????? event_el_user[0] = '\0';

            ???
            ??????????? // 設(shè)置事件的一些描述
            ??????????? if(el->er->NumStrings)
            ??????????? {?
            ??????????????? size_left = 1020;?

            ??????????????? sstr = (LPSTR)((LPBYTE)el->er + el->er->StringOffset);
            ??????????????? el_string[0] = '\0';

            ??????????????? for (nstr = 0;nstr < el->er->NumStrings;nstr++)
            ??????????????? {
            ??????????????????? str_size = strlen(sstr);?
            ??????????????????? strncat(el_string, sstr, size_left);

            ??????????????????? tmp_str= strchr(el_string, '\0');
            ??????????????????? if(tmp_str)
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';??
            ??????????????????????? tmp_str++; *tmp_str = '\0';
            ??????????????????? }
            ??????????????????? size_left-=str_size + 1;

            ??????????????????? if(nstr <= 54)
            ??????????????????????? el_sstring[nstr] = (LPSTR)sstr;

            ??????????????????? sstr = strchr( (LPSTR)sstr, '\0');
            ??????????????????? sstr++;
            ?????
            ??????????????? }

            ??????????????? // 得到事件描述
            ??????????????? event_descriptive_msg = El_GetMessage(el->er, el->event_name, event_sourcename, el_sstring);
            ??????????????? if(event_descriptive_msg != NULL)
            ??????????????? {
            ?????????????????
            ??????????????????? tmp_str = event_descriptive_msg;???
            ??????????????????? while((tmp_str = strchr(tmp_str, '\n')))
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';
            ??????????????????????? tmp_str++;?????????
            ??????????????????? }???

            ??????????????????? tmp_str = event_descriptive_msg;???
            ??????????????????? while((tmp_str = strchr(tmp_str, '\r')))
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';
            ??????????????????????? tmp_str++;
            ??????//strchr(tmp_str, '\n');
            ??????????????????? }???
            ??????????????? }
            ??????????? }
            ??????????? else
            ??????????? {
            ??????????????? strncpy(el_string, "(no message)", 1020);?
            ??????????? }
            ??????????? // 得到username
            ??????????? if (el->er->UserSidLength)
            ??????????? {
            ??????????????? SID_NAME_USE account_type;
            ??????????????? if(!LookupAccountSid(NULL, (SID *)((LPSTR)el->er + el->er->UserSidOffset),
            ??????????????????????????? event_el_user, &user_size, event_el_domain, &domain_size, &account_type))??
            ??????????????? {
            ??????????????????? strncpy(event_el_user, "(no user)", 255);
            ??????????????????? strncpy(event_el_domain, "no domain", 255);
            ??????????????? }

            ??????????? }

            ??????????? else
            ??????????? {
            ??????????????? strncpy(event_el_user, "A", 255);?
            ??????????????? strncpy(event_el_domain, "N", 255);?
            ??????????? }
            ???
            ???/////////////////////////////////////
            ???//插入列表
            ???Insert_Record();
            ???////////////////////////////////////
            ???
            ??????????? if(event_descriptive_msg != NULL)
            ??????????????? LocalFree(event_descriptive_msg);

            ??????????? // Changing the point to the er
            ???//i++;
            ???event_record++;
            ??????????? read -= el->er->Length;
            ??????????? el->er = (EVENTLOGRECORD *)((LPBYTE) el->er + el->er->Length);
            ???
            ??????? }?
            ??my_host_IsListCtrl = true;
            ??
            ??CString strlove;
            ??//輸出事件個(gè)數(shù)
            ??strlove.Format("%d",event_record);
            ??GetDlgItem(IDC_EVENTNUM)->SetWindowText(strlove);
            ??//輸出事件錯(cuò)誤個(gè)數(shù)
            ??strlove.Format("%d",event_error_num);
            ??GetDlgItem(IDC_ERRORNUM)->SetWindowText(strlove);
            ??//輸出事件信息個(gè)數(shù)
            ??strlove.Format("%d",event_info_num);
            ??GetDlgItem(IDC_INFONUM)->SetWindowText(strlove);
            ??//輸出事件警告?zhèn)€數(shù)
            ??strlove.Format("%d",event_warn_num);
            ??GetDlgItem(IDC_WARNNUM)->SetWindowText(strlove);
            ??//輸出事件審核成功個(gè)數(shù)??
            ??strlove.Format("%d",event_auditsucceed_num);
            ??GetDlgItem(IDC_AUDITSUCCEEDNUM)->SetWindowText(strlove);
            ??//輸出事件審核失敗個(gè)數(shù)??
            ??strlove.Format("%d",event_auditdefeat_num);
            ??GetDlgItem(IDC_AUDITDEFEATNUM)->SetWindowText(strlove);

            ??????? // Setting er to the beginning of the buffer?
            ??????? el->er = (EVENTLOGRECORD *)&mbuffer;??
            ??? }
            ?event_record=0;
            }
            ///////////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Set_EventNum()
            {?
            ?//給記錄數(shù)字初始化
            ?event_record=0;
            ?event_auditsucceed_num=0;
            ?event_info_num=0;
            ?event_error_num=0;
            ?event_warn_num=0;
            ?event_auditdefeat_num=0;

            }
            ///////////////////////////////////////////////////////////////////
            int CRead_EventDlg::Start_EL(char *app, os_el *el)
            {

            ?el->h = OpenEventLog(NULL, app);
            ??? if(!el->h)
            ??? {
            ??????? return(0);????
            ??? }

            ??? el->event_name = app;
            ??? GetOldestEventLogRecord(el->h, &el->record);

            ??? return(1);
            }
            ////////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Win_startel(char *eventlog)
            {
            ?Start_EL(eventlog,el);
            ??? Read_event(el,1);
            }
            ////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Save_event(os_el *el, int printit)
            {
            ?event_record=0;
            ?DWORD nstr;
            ??? DWORD user_size;
            ??? DWORD domain_size;
            ??? DWORD read, needed;
            ??? int size_left;
            ??? int str_size;

            ??? char *mbuffer[BUFFER_SIZE];
            ??? LPSTR sstr = NULL;
            ?//int i=0;
            ?char *tmp_str = NULL;
            ?
            ??? char el_string[1025];
            ??? char final_out_msg[1024];??//最后輸出的信息
            ??? LPSTR el_sstring[57];

            ??? /* Er must point to the mbuffer */
            ??? el->er = (EVENTLOGRECORD *) &mbuffer;

            ??? // Zeroing the last values
            ??? el_string[1024] = '\0';
            ??? event_el_user[256] = '\0';
            ??? event_el_domain[256] = '\0';
            ??? final_out_msg[1023] = '\0';
            ??? el_sstring[56] = NULL;

            ??? // Reading the event log ????
            ??? while(ReadEventLog(el->h,
            ??????????????? EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ,
            ??????????????? 0,
            ??????????????? el->er, BUFFER_SIZE -1, &read, &needed))
            ??? {
            ??????? while(read > 0)
            ??????? {
            ???//得到事件的類型
            ??????????? event_category = El_GetCategory(el->er->EventType);
            ???//得到事件來(lái)源
            ??????????? event_sourcename = (LPSTR) ((LPBYTE) el->er + sizeof(EVENTLOGRECORD));
            ???//得到計(jì)算機(jī)名
            ??????????? event_computername = event_sourcename + strlen(event_sourcename) + 1;
            ???//給描述信息初始化
            ??????????? event_descriptive_msg = NULL;


            ??????????? //初始化domain/user尺寸
            ??????????? user_size = 255; domain_size = 255;
            ??????????? event_el_domain[0] = '\0';
            ??????????? event_el_user[0] = '\0';


            ??????????? // 設(shè)置事件的一些描述
            ??????????? if(el->er->NumStrings)
            ??????????? {?
            ??????????????? size_left = 1020;?

            ??????????????? sstr = (LPSTR)((LPBYTE)el->er + el->er->StringOffset);
            ??????????????? el_string[0] = '\0';

            ??????????????? for (nstr = 0;nstr < el->er->NumStrings;nstr++)
            ??????????????? {
            ??????????????????? str_size = strlen(sstr);?
            ??????????????????? strncat(el_string, sstr, size_left);

            ??????????????????? tmp_str= strchr(el_string, '\0');
            ??????????????????? if(tmp_str)
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';??
            ??????????????????????? tmp_str++; *tmp_str = '\0';
            ??????????????????? }
            ??????????????????? size_left-=str_size + 1;

            ??????????????????? if(nstr <= 54)
            ??????????????????????? el_sstring[nstr] = (LPSTR)sstr;

            ??????????????????? sstr = strchr( (LPSTR)sstr, '\0');
            ??????????????????? sstr++;
            ?????
            ??????????????? }

            ??????????????? //Get a more descriptive message (if available)
            ??????????????? event_descriptive_msg = El_GetMessage(el->er, el->event_name, event_sourcename, el_sstring);
            ??????????????? if(event_descriptive_msg != NULL)
            ??????????????? {
            ??????????????????? // Remove any \n or \r
            ??????????????????? tmp_str = event_descriptive_msg;???
            ??????????????????? while((tmp_str = strchr(tmp_str, '\n')))
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';
            ??????????????????????? tmp_str++;
            ???????????
            ??????????????????? }???

            ??????????????????? tmp_str = event_descriptive_msg;???
            ??????????????????? while((tmp_str = strchr(tmp_str, '\r')))
            ??????????????????? {
            ??????????????????????? *tmp_str = ' ';
            ??????????????????????? tmp_str++;
            ??????//strchr(tmp_str, '\n');

            ??????????????????? }???
            ??????????????? }
            ??????????? }
            ??????????? else
            ??????????? {
            ??????????????? strncpy(el_string, "(no message)", 1020);?
            ??????????? }


            ??????????? // 得到username
            ??????????? if (el->er->UserSidLength)
            ??????????? {
            ??????????????? SID_NAME_USE account_type;
            ??????????????? if(!LookupAccountSid(NULL, (SID *)((LPSTR)el->er + el->er->UserSidOffset),
            ??????????????????????????? event_el_user, &user_size, event_el_domain, &domain_size, &account_type))??
            ??????????????? {
            ??????????????????? strncpy(event_el_user, "(no user)", 255);
            ??????????????????? strncpy(event_el_domain, "no domain", 255);
            ??????????????? }

            ??????????? }

            ??????????? else
            ??????????? {
            ??????????????? strncpy(event_el_user, "A", 255);?
            ??????????????? strncpy(event_el_domain, "N", 255);?
            ??????????? }

            ??????????? if(printit)
            ??????????? {
            ??????????????? tm?? *event_time?? =?? localtime((const?? long?? *)&el->er->TimeWritten);

            ??????????????? _snprintf(final_out_msg, 1022,
            ??????????????????????? "事件記錄序號(hào):%d\n事件:%s\n日期:%.4hd-%2hd-%2hd\n時(shí)間:%.2hd:%.2hd:%.2hd\n事件類型:%s\n事件來(lái)源:%s\n事件ID:(%u)\n用戶:%s/%s\n計(jì)算機(jī):%s\n描述:\n%s\n\n\n",
            ??????event_record,
            ??????el->event_name,
            ??????event_time->tm_year + 1900,
            ??????event_time->tm_mon + 1,
            ??????event_time->tm_mday,
            ??????event_time->tm_hour,
            ??????event_time->tm_min,
            ??????event_time->tm_sec,?
            ??????
            ??????????????????????? event_category,
            ??????event_sourcename,
            ???????????????????????
            ??????????????????????? (WORD)el->er->EventID,
            ??????????????????????? event_el_domain,
            ??????????????????????? event_el_user,
            ???????????????????????
            ??????event_computername,
            ??????????????????????? event_descriptive_msg != NULL?event_descriptive_msg:el_string);?
            ??????????????
            ??????? ?fprintf(fp, "%s\n", final_out_msg);?
            ??????????? }

            ??????????? if(event_descriptive_msg != NULL)
            ??????????????? LocalFree(event_descriptive_msg);

            ??????????? // Changing the point to the er
            ??????????? read -= el->er->Length;
            ??????????? el->er = (EVENTLOGRECORD *)((LPBYTE) el->er + el->er->Length);
            ???event_record++;
            ??????? }??

            ??????? // Setting er to the beginning of the buffer ?
            ??????? el->er = (EVENTLOGRECORD *)&mbuffer;
            ??
            ??? }
            }
            //////////////////////////////////////////////////////////////////////

            void CRead_EventDlg::Save_Application()
            {
            ?//從列表中保存應(yīng)用日志
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??exit(1);
            ?}
            ?else
            ?{
            ??MessageBox("應(yīng)用日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}

            ?fprintf(fp, "\n\n***********應(yīng)用日志列表***********\n\n\n");
            ?Save_List(1,event_record);

            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("應(yīng)用日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);?
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);??

            ?}

            }
            //////////////////////////////////////////////////////////////////

            void CRead_EventDlg::Save_Security()
            {
            ?//從列表中保存安全日志
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);

            ??exit(1);
            ?}
            ?else
            ?{
            ??
            ??MessageBox("安全日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);

            ?}


            ?fprintf(fp, "\n\n***********安全日志列表***********\n\n\n");?

            ?Save_List(1,event_record);

            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("安全日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);
            ?}

            }
            ////////////////////////////////////////////////////
            void CRead_EventDlg::Save_System()
            {
            ?//從列表中保存系統(tǒng)日志
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??exit(1);
            ?}
            ?else
            ?{
            ??MessageBox("系統(tǒng)日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}
            ?fprintf(fp, "\n\n***********系統(tǒng)日志列表***********\n\n\n");?

            ?Save_List(1,event_record);

            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("系統(tǒng)日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);??
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);
            ?}

            }
            /////////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Save_Single_Record(int single_record)
            {
            ?//從列表中保存單個(gè)記錄
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);??
            ??exit(1);
            ?}
            ?else
            ?{
            ??MessageBox("一個(gè)記錄正要保存了!","信息!",MB_OK|MB_ICONINFORMATION);??
            ?}

            ?fprintf(fp, "\n\n***********第%d記錄***********\n\n\n",nItem);
            ?
            ?Save_List(single_record,single_record);


            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("日志記錄關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);?
            ?}
            ?else
            ?{
            ??MessageBox("還有一個(gè)記錄開(kāi)著呢!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);??
            ?}
            }
            /////////////////////////////////////////////////////////////////////
            void CRead_EventDlg::Save_List(int record_initialize, int record_num)
            {
            ?//保存列表記錄
            ?CString save_event_record;
            ?CString save_event_category;
            ?CString save_event_sourcename;
            ?CString save_event_date;
            ?CString save_event_time;
            ?CString save_event_id;
            ?CString save_event_user;
            ?CString save_event_computername;
            ?CString save_event_descriptive_msg;
            ?CString save_event_name;
            ?
            ?switch(istype)
            ?{
            ?case 1:
            ??save_event_name="Security";
            ??break;
            ?case 2:
            ??save_event_name="System";
            ??break;
            ?case 3:
            ??save_event_name="Application";
            ??break;
            ?default:
            ??return;
            ? ?}

            ?for(int i=record_initialize-1;i<record_num;i++)
            ?{
            ??save_event_record=m_mm_host_ListCtrl.GetItemText(i,0);
            ??save_event_category=m_mm_host_ListCtrl.GetItemText(i,1);
            ??save_event_sourcename=m_mm_host_ListCtrl.GetItemText(i,2);
            ??save_event_date=m_mm_host_ListCtrl.GetItemText(i,3);
            ??save_event_time=m_mm_host_ListCtrl.GetItemText(i,4);
            ??save_event_id=m_mm_host_ListCtrl.GetItemText(i,5);
            ??save_event_user=m_mm_host_ListCtrl.GetItemText(i,6);
            ??save_event_computername=m_mm_host_ListCtrl.GetItemText(i,7);
            ??save_event_descriptive_msg=m_mm_host_ListCtrl.GetItemText(i,8);
            ??fprintf(fp, "事件記錄序號(hào):%s\n事件:%s\n日期:%s\n時(shí)間:%s\n類型:%s\n事件來(lái)源:%s\n事件ID:%s\n用戶:%s\n計(jì)算機(jī):%s\n描述:\n%s\n\n\n\n",
            ????save_event_record,
            ????save_event_name,
            ????save_event_date,
            ????save_event_time,
            ????save_event_category,
            ????save_event_sourcename,
            ????save_event_id,
            ????save_event_user,
            ????save_event_computername,
            ????save_event_descriptive_msg);

            ?}

            }
            ////////////////////////////////////////////////////
            void CRead_EventDlg::Save_Hard_Application()
            {
            ?//從系統(tǒng)中保存應(yīng)用日志
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??exit(1);
            ?}
            ?else
            ?{
            ??MessageBox("應(yīng)用日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}

            ?fprintf(fp, "\n\n***********應(yīng)用日志列表***********\n\n\n");
            ?
            ?Start_EL("application",el);
            ?Save_event(el, 1);
            ?
            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("應(yīng)用日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);?
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);??

            ?}

            }
            ////////////////////////////////////////////////////////////////////


            void CRead_EventDlg::Save_Hard_Security()
            {
            ?//從系統(tǒng)中保存安全記錄
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);

            ??exit(1);
            ?}
            ?else
            ?{
            ??
            ??MessageBox("安全日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);

            ?}


            ?fprintf(fp, "\n\n***********安全日志列表***********\n\n\n");?

            ?Start_EL("Security",el);
            ?Save_event(el, 1);

            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("安全日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);
            ?}
            }
            //////////////////////////////////////////////////////////////
            void CRead_EventDlg::Save_Hard_System()
            {
            ?//從系統(tǒng)中保存系統(tǒng)日志
            ?if(!fp)
            ?{
            ??MessageBox("怎么沒(méi)打開(kāi)呢!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??exit(1);
            ?}
            ?else
            ?{
            ??MessageBox("系統(tǒng)日志文件打開(kāi)了!","信息!",MB_OK|MB_ICONINFORMATION);
            ?}

            ?fprintf(fp, "\n\n***********系統(tǒng)日志列表***********\n\n\n");?

            ?Start_EL("System",el);
            ?Save_event(el, 1);

            ?fclose(fp);
            ?if(fclose(fp))
            ?{
            ??MessageBox("系統(tǒng)日志文件關(guān)閉了!","信息!",MB_OK|MB_ICONINFORMATION);??
            ?}
            ?else
            ?{
            ??MessageBox("還開(kāi)著呢了,,抓緊關(guān)它吧!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);
            ?}

            }
            /////////////////////////////////////////////////////////////////

            void CRead_EventDlg::OnSave_Hard()
            {
            ?//從系統(tǒng)中保存記錄的響應(yīng)函數(shù)
            ?// TODO: Add your control notification handler code here
            ?switch(istype)
            ?{
            ?case 1:
            ??break;
            ?case 2:
            ??break;
            ?case 3:
            ??break;
            ?default:
            ??MessageBox("請(qǐng)選擇日志類型","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return;
            ? ?}

            ?CString sFileName;
            ?sFileName.Format("");

            ?CFileDialog dlg(FALSE, "txt", sFileName,
            ?????OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,
            ?????"文本文件(*.txt)|*.txt|文本文件(*.doc)|*.doc||", this);?

            ?/////////////////////////////////////////
            ?//從系統(tǒng)中保存整個(gè)日志
            ?if(IDCANCEL==(MessageBox("您確定要從系統(tǒng)中保存日志文件?","提示!",MB_OKCANCEL|MB_ICONQUESTION)))
            ?{
            ??nItem=0;
            ??return;
            ?}

            ?if (dlg.DoModal() == IDOK)
            ?{
            ??dlg.m_ofn.lpstrTitle = _T("從系統(tǒng)中保存日志文件");
            ??CString fileName = dlg.GetPathName();

            ??fp = fopen(fileName,"w");
            ??switch(istype)
            ??{
            ??case 1:
            ???Save_Hard_Security();
            ???break;
            ??case 2:
            ???Save_Hard_System();
            ???break;
            ??case 3:
            ???Save_Hard_Application();
            ???break;
            ??default:
            ???MessageBox("請(qǐng)選擇日志類型","警告!",MB_OK|MB_ICONEXCLAMATION);
            ???return;
            ? ??}
            ?}
            ?nItem=0;
            ?
            }
            /////////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////////
            /////////////////////////////////////////////////////////////////
            // DescriptionDiaLog.cpp : implementation file
            //

            #include "stdafx.h"
            #include "Read_Event.h"
            #include "DescriptionDiaLog.h"
            #include "Read_EventDlg.h"

            #ifdef _DEBUG
            #define new DEBUG_NEW
            #undef THIS_FILE
            static char THIS_FILE[] = __FILE__;
            #endif

            extern int istype;
            extern int nItem;
            extern int event_record;
            extern CString m_mm_host_state;
            extern os_el el[1];
            extern BOOL issub;
            BOOL isShow=FALSE;
            /////////////////////////////////////////////////////////////////////////////
            // DescriptionDiaLog dialog


            DescriptionDiaLog::DescriptionDiaLog(CWnd* pParent /*=NULL*/)
            ?: CDialog(DescriptionDiaLog::IDD, pParent)
            {
            ?//{{AFX_DATA_INIT(DescriptionDiaLog)
            ?m_sub_event_computername = _T("");
            ?//}}AFX_DATA_INIT
            }


            void DescriptionDiaLog::DoDataExchange(CDataExchange* pDX)
            {
            ?CDialog::DoDataExchange(pDX);
            ?//{{AFX_DATA_MAP(DescriptionDiaLog)
            ?DDX_Text(pDX, IDC_SBUEVENTCOMPUTERNAME, m_sub_event_computername);
            ?//}}AFX_DATA_MAP
            }


            BEGIN_MESSAGE_MAP(DescriptionDiaLog, CDialog)
            ?//{{AFX_MSG_MAP(DescriptionDiaLog)
            ?ON_BN_CLICKED(IDC_SHOW, OnShow)
            ?ON_BN_CLICKED(IDC_PRESHOW, OnPreshow)
            ?ON_BN_CLICKED(IDC_NEXTSHOW, OnNextshow)
            ?//}}AFX_MSG_MAP
            END_MESSAGE_MAP()

            /////////////////////////////////////////////////////////////////////////////
            // DescriptionDiaLog message handlers

            BOOL DescriptionDiaLog::OnInitDialog()
            {
            ?CDialog::OnInitDialog();
            ?
            ?// TODO: Add extra initialization here
            ?issub=true;
            ?return TRUE;? // return TRUE unless you set the focus to a control
            ?????????????? // EXCEPTION: OCX Property Pages should return FALSE
            }
            //////////////////////////////////////////////////////////
            void DescriptionDiaLog::Sub_Prepare()
            {

            ?char *m_sub_cTemp;
            ?switch(istype)
            ?{
            ?case 1:
            ??m_sub_cTemp ="Security";
            ??break;
            ?case 2:
            ??m_sub_cTemp ="System";
            ??break;
            ?default:
            ??m_sub_cTemp ="application";
            ?}
            ?Sub_Show(nItem);
            }
            ///////////////////////////////////////////////////////
            void DescriptionDiaLog::OnShow()
            {
            ?//顯示記錄內(nèi)容
            ?// TODO: Add your control notification handler code here
            ?//判斷是否有記錄被選中
            ?if (nItem==0)
            ?{
            ??MessageBox("錯(cuò)了!","錯(cuò)誤!",MB_OK|MB_ICONSTOP);
            ??CDialog::OnOK();
            ?}
            ?//如果是選中的是列表中第一條記錄,向前觀察按鈕失效
            ?if(nItem==1)
            ?{
            ??GetDlgItem(IDC_PRESHOW)->EnableWindow(FALSE);
            ??GetDlgItem(IDC_NEXTSHOW)->EnableWindow(TRUE);
            ?}
            ?//如果是選中的是列表中最后一條記錄,向后觀察按鈕失效
            ?if(nItem==event_record)
            ?{
            ??GetDlgItem(IDC_PRESHOW)->EnableWindow(TRUE);
            ??GetDlgItem(IDC_NEXTSHOW)->EnableWindow(FALSE);
            ?}
            ?Sub_Prepare();
            ?isShow=TRUE;
            }
            ///////////////////////////////////////////////////////////
            void DescriptionDiaLog::OnPreshow()
            {?
            ?//向前觀察按鈕響應(yīng)函數(shù)
            ?// TODO: Add your control notification handler code here
            ?if (!isShow)
            ?{
            ??MessageBox("請(qǐng)回去選擇記錄!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??CDialog::OnOK();
            ?}
            ?nItem--;
            ?//如果是選中的是列表中第一條記錄,向前觀察按鈕失效
            ?if(nItem==1)
            ?{
            ??GetDlgItem(IDC_PRESHOW)->EnableWindow(FALSE);
            ?}
            ?GetDlgItem(IDC_NEXTSHOW)->EnableWindow(TRUE);
            ?Sub_Prepare();

            }
            //////////////////////////////////////////////////////////////////
            void DescriptionDiaLog::OnNextshow()
            {?
            ?//向后觀察按鈕
            ?// TODO: Add your control notification handler code here
            ?nItem++;
            ?//如果是選中的是列表中最后一條記錄,向后觀察按鈕失效
            ?if(nItem==event_record)
            ?{
            ??GetDlgItem(IDC_NEXTSHOW)->EnableWindow(FALSE);
            ?}
            ?GetDlgItem(IDC_PRESHOW)->EnableWindow(TRUE);
            ?Sub_Prepare();

            }
            //////////////////////////////////////////////////////////////

            void DescriptionDiaLog::OnOK()
            {
            ?// TODO: Add extra validation here
            ?nItem=0;
            ?CDialog::OnOK();
            }

            void DescriptionDiaLog::OnCancel()
            {
            ?// TODO: Add extra cleanup here
            ?nItem=0;
            ?CDialog::OnCancel();
            }
            ////////////////////////////////////////////////////////////////
            void DescriptionDiaLog::Sub_Show(int sub_nItem)
            {
            ?//顯示詳細(xì)記錄按鈕的響應(yīng)函數(shù)
            ?CRead_EventDlg* dlg = (CRead_EventDlg *)AfxGetMainWnd();
            ?CString sub_event;

            ?//事件序列
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,0);
            ?GetDlgItem(IDC_SBUEVENTRECORD)->SetWindowText(sub_event);
            ?//事件類型
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,1);
            ?GetDlgItem(IDC_SBUEVENTCATEGORY)->SetWindowText(sub_event);
            ?//事件來(lái)源
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,2);
            ?GetDlgItem(IDC_SUBEVENTSOURCENAME)->SetWindowText(sub_event);
            ?//事件日期
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,3);
            ?GetDlgItem(IDC_SUBEVENTDATA)->SetWindowText(sub_event);
            ?//事件時(shí)間
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,4);
            ?GetDlgItem(IDC_SBUEVENTTIME)->SetWindowText(sub_event);
            ?//事件ID
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,5);
            ?GetDlgItem(IDC_SBUEVENTID)->SetWindowText(sub_event);
            ?//用戶
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,6);
            ?GetDlgItem(IDC_SBUEVENTUSERNAME)->SetWindowText(sub_event);
            ?//計(jì)算機(jī)
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,7);
            ?GetDlgItem(IDC_SBUEVENTCOMPUTERNAME)->SetWindowText(sub_event);
            ?//詳細(xì)描述
            ?sub_event=dlg->m_mm_host_ListCtrl.GetItemText(sub_nItem-1,8);
            ?GetDlgItem(IDC_EDIT_SBUEVENTMESSAGE)->SetWindowText(sub_event);
            ?
            ?switch(istype)
            ?{
            ?case 1:
            ??sub_event="Security";
            ??break;
            ?case 2:
            ??sub_event="System";
            ??break;
            ?case 3:
            ??sub_event="Application";
            ??break;
            ?default:
            ??MessageBox("請(qǐng)選擇日志類型!","警告!",MB_OK|MB_ICONEXCLAMATION);
            ??return;
            ? ?}
            ?//事件
            ?GetDlgItem(IDC_SUBEVENT)->SetWindowText(sub_event);

            }
            /////////////////////////////////////////////////////////////////

            posted @ 2006-09-07 14:37 啤酒 閱讀(818) | 評(píng)論 (0)編輯 收藏

            2006年9月6日

            文件類型操作

            取得文件名
            {
            ????? CString
            ????? FilePathName;
            ????? CFileDialog dlg(TRUE);///TRUE為OPEN對(duì)話框,F(xiàn)ALSE為SAVE AS對(duì)話框
            ????? if(dlg.DoModal()==IDOK)
            ????? FilePathName=dlg.GetPathName();
            }
            相關(guān)信息:CFileDialog 用于取文件名的幾個(gè)成員函數(shù):
            假如選擇的文件是C:\WINDOWS\TEST.EXE
            則:
            ?? (1)GetPathName();取文件名全稱,包括完整路徑。取回C:\WINDOWS\TEST.EXE
            ?? (2)GetFileTitle();取回TEST
            ?? (3)GetFileName();取文件全名:TEST.EXE
            ?? (4)GetFileExt();取擴(kuò)展名EXE
            ?
            打開(kāi)文件
            CFile file("C:\HELLO.TXT",CFile::modeRead);///只讀方式打開(kāi)
            ///CFile::modeRead可改為 CFile::modeWrite(只寫),CFile::modeReadWrite(讀寫),CFile::modeCreate(新建)
            例子:
            {
            ??? CFile file;
            ??? file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
            ??? ...
            ??? ...
            }
            ?
            移動(dòng)文件指針
            ??? file.Seek(100,CFile::begin);///從文件頭開(kāi)始往下移動(dòng)100字節(jié)
            ??? file.Seek(-50,CFile::end);///從文件末尾往上移動(dòng)50字節(jié)
            ??? file.Seek(-30,CFile::current);///從當(dāng)前位置往上移動(dòng)30字節(jié)
            ??? file.SeekToBegin();///移到文件頭
            ??? file.SeekToEnd();///移到文件尾

            對(duì)于CFileDialog 使用可參照下面

            :通用對(duì)話框的使用
            ? ? 大家都遇到過(guò)CFileDialog文件對(duì)話框吧,它的參數(shù)讓人頭疼.下面解除大家的頭疼.
            ? ? 先在使用文件對(duì)話框的類的類定義文件中加入對(duì)象定義CFileDialog m_MyOpenDialog(TRUE,"avi","*.avi")。隨后,在需要使用該對(duì)話框的地方加入以下語(yǔ)句:
            ? ? m_MyOpenDialog.Domodal();
            ? ? 就可以預(yù)覽所有.avi文件.

            ? ? 其調(diào)用規(guī)則為:
            ? ? 函數(shù)原型:
            ? ? CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPR OMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd
            =NULL);
            ? ? 參數(shù)說(shuō)明:
            ? ? bOpenFileDialog:為TRUE或FALSE。TRUE為打開(kāi)文件;FALSE為保存文件。
            ? ? lpszDefExt? ???:為缺省的擴(kuò)展名。
            ? ? lpszFileName? ?:為顯示在文件名組合框的編輯框的文件名,一般可選NULL
            ? ? dwFlags? ?? ???:為對(duì)話框風(fēng)格,一般為OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,即隱藏只讀選項(xiàng)和覆蓋已有文件前提示。
            ? ? LpszFilter? ???:為下拉列表樞中顯示文件類型。
            ? ? pParentWnd? ???:一般可選NULL。
            ? ? 例如:在文件類型列表框的編輯框要顯示“可執(zhí)行文件(*.exe)”,而在它的下拉列表框中列出“視頻文件(*.avi)、All Files(*.*)”內(nèi)容,則變量定義如下:CFileDialog m_MyOpenDialog(TRUE,"exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"可執(zhí)行文件(*.exe) | *.exe|視頻文件(*.bat) | *.bat |All Files (*.*) | *.* ||",NULL);
            ? ? 注:看看沒(méi)有*.*后的||會(huì)是什么效果.

            關(guān)于:fseek

            fseek()函數(shù)有三個(gè)參數(shù)


            第一個(gè)是文件的指針


            第二個(gè)是偏移量? 也就是指針移動(dòng)的字符數(shù)?

            ?? //這個(gè)參數(shù)必須是L類型

            ?? //如果是負(fù)數(shù)? 表示指針?lè)聪蛞苿?dòng)(向文件頭的方向)


            第三個(gè)是偏移量的相對(duì)開(kāi)始位置

            0? 表示從文件開(kāi)始處? 偏移 L

            1? 表示從當(dāng)前位置??? 偏移 L

            2? 表示從文件末尾??? 偏移 L? //只能是負(fù)數(shù)了? 也就是只能前向移動(dòng)
            fseek
            Moves the file pointer to a specified location.

            int fseek(
            ?? FILE *stream,
            ?? long offset,
            ?? int origin
            );
            Parameters
            stream
            Pointer to FILE structure.
            offset
            Number of bytes from origin.
            origin
            Initial position.
            Return Value
            If successful, fseek returns 0. Otherwise, it returns a nonzero value. On devices incapable of seeking, the return value is undefined.

            Remarks
            The fseek function moves the file pointer (if any) associated with stream to a new location that is offset bytes from origin. The next operation on the stream takes place at the new location. On a stream open for update, the next operation can be either a read or a write. The argument origin must be one of the following constants, defined in STDIO.H:

            SEEK_CUR
            Current position of file pointer.
            SEEK_END
            End of file.
            SEEK_SET
            Beginning of file.

            再轉(zhuǎn)一片文章:

            c中的文件操作
            1
            C?的文件操作/TD>
             
            文件

            文件的基本概念
              所謂“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。?這個(gè)數(shù)據(jù)集有一個(gè)名稱,叫做文件名。?實(shí)際上在前面的各章中我們已經(jīng)多次使用了文件,例如源程序文件、目標(biāo)文件、可執(zhí)行文件、庫(kù)文件?(頭文件)等。文件通常是駐留在外部介質(zhì)(如磁盤等)上的,?在使用時(shí)才調(diào)入內(nèi)存中來(lái)。從不同的角度可對(duì)文件作不同的分類。從用戶的角度看,文件可分為普通文件和設(shè)備文件兩種。

              普通文件是指駐留在磁盤或其它外部介質(zhì)上的一個(gè)有序數(shù)據(jù)集,可以是源文件、目標(biāo)文件、可執(zhí)行程序;?也可以是一組待輸入處理的原始數(shù)據(jù),或者是一組輸出的結(jié)果。對(duì)于源文件、目標(biāo)文件、?可執(zhí)行程序可以稱作程序文件,對(duì)輸入輸出數(shù)據(jù)可稱作數(shù)據(jù)文件。

              設(shè)備文件是指與主機(jī)相聯(lián)的各種外部設(shè)備,如顯示器、打印機(jī)、鍵盤等。在操作系統(tǒng)中,把外部設(shè)備也看作是一個(gè)文件來(lái)進(jìn)行管理,把它們的輸入、輸出等同于對(duì)磁盤文件的讀和寫。?通常把顯示器定義為標(biāo)準(zhǔn)輸出文件,?一般情況下在屏幕上顯示有關(guān)信息就是向標(biāo)準(zhǔn)輸出文件輸出。如前面經(jīng)常使用的printf,putchar?函數(shù)就是這類輸出。鍵盤通常被指定標(biāo)準(zhǔn)的輸入文件,?從鍵盤上輸入就意味著從標(biāo)準(zhǔn)輸入文件上輸入數(shù)據(jù)。scanf,getchar函數(shù)就屬于這類輸入。?

              從文件編碼的方式來(lái)看,文件可分為ASCII碼文件和二進(jìn)制碼文件兩種。

              ASCII文件也稱為文本文件,這種文件在磁盤中存放時(shí)每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存放對(duì)應(yīng)的ASCII碼。例如,數(shù)5678的存儲(chǔ)形式為:
            ASC碼:? 00110101?00110110?00110111?00111000
                 ↓?    ↓    ↓?   ↓
            十進(jìn)制碼:?5     6    7    8?共占用4個(gè)字節(jié)。ASCII碼文件可在屏幕上按字符顯示,?例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內(nèi)容。?由于是按字符顯示,因此能讀懂文件內(nèi)容。

              二進(jìn)制文件是按二進(jìn)制的編碼方式來(lái)存放文件的。?例如,?數(shù)5678的存儲(chǔ)形式為:?00010110?00101110只占二個(gè)字節(jié)。二進(jìn)制文件雖然也可在屏幕上顯示,?但其內(nèi)容無(wú)法讀懂。C系統(tǒng)在處理這些文件時(shí),并不區(qū)分類型,都看成是字符流,按字節(jié)進(jìn)行處理。?輸入輸出字符流的開(kāi)始和結(jié)束只由程序控制而不受物理符號(hào)(如回車符)的控制。?因此也把這種文件稱作“流式文件”。

              本章討論流式文件的打開(kāi)、關(guān)閉、讀、寫、?定位等各種操作。文件指針在C語(yǔ)言中用一個(gè)指針變量指向一個(gè)文件,?這個(gè)指針?lè)Q為文件指針。通過(guò)文件指針就可對(duì)它所指的文件進(jìn)行各種操作。?定義說(shuō)明文件指針的一般形式為:?FILE*?指針變量標(biāo)識(shí)符;?其中FILE應(yīng)為大寫,它實(shí)際上是由系統(tǒng)定義的一個(gè)結(jié)構(gòu),?該結(jié)構(gòu)中含有文件名、文件狀態(tài)和文件當(dāng)前位置等信息。?在編寫源程序時(shí)不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。例如:FILE?*fp;?表示fp是指向FILE結(jié)構(gòu)的指針變量,通過(guò)fp?即可找存放某個(gè)文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件,?實(shí)施對(duì)文件的操作。習(xí)慣上也籠統(tǒng)地把fp稱為指向一個(gè)文件的指針。文件的打開(kāi)與關(guān)閉文件在進(jìn)行讀寫操作之前要先打開(kāi),使用完畢要關(guān)閉。?所謂打開(kāi)文件,實(shí)際上是建立文件的各種有關(guān)信息,?并使文件指針指向該文件,以便進(jìn)行其它操作。關(guān)閉文件則斷開(kāi)指針與文件之間的聯(lián)系,也就禁止再對(duì)該文件進(jìn)行操作。

              在C語(yǔ)言中,文件操作都是由庫(kù)函數(shù)來(lái)完成的。?在本章內(nèi)將介紹主要的文件操作函數(shù)。

            文件打開(kāi)函數(shù)fopen

              fopen函數(shù)用來(lái)打開(kāi)一個(gè)文件,其調(diào)用的一般形式為:?文件指針名=fopen(文件名,使用文件方式)?其中,“文件指針名”必須是被說(shuō)明為FILE?類型的指針變量,“文件名”是被打開(kāi)文件的文件名。?“使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串?dāng)?shù)組。例如:?
            FILE?*fp;
            fp=("file?a","r");
            其意義是在當(dāng)前目錄下打開(kāi)文件file?a,?只允許進(jìn)行“讀”操作,并使fp指向該文件。
             
             
             
             
            2
            C?的文件操作/TD>
             
            又如:
            FILE?*fphzk
            fphzk=("c:\\hzk16',"rb")
            其意義是打開(kāi)C驅(qū)動(dòng)器磁盤的根目錄下的文件hzk16,?這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“\\?”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示根目錄。使用文件的方式共有12種,下面給出了它們的符號(hào)和意義。?
            文件使用方式?       意?義
            “rt”      只讀打開(kāi)一個(gè)文本文件,只允許讀數(shù)據(jù)?
            “wt”      只寫打開(kāi)或建立一個(gè)文本文件,只允許寫數(shù)據(jù)
            “at”      追加打開(kāi)一個(gè)文本文件,并在文件末尾寫數(shù)據(jù)
            “rb”      只讀打開(kāi)一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)
            “wb”    ? ?只寫打開(kāi)或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)
            “ab”?    ? 追加打開(kāi)一個(gè)二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)
            “rt+”     ?讀寫打開(kāi)一個(gè)文本文件,允許讀和寫
            “wt+”     ?讀寫打開(kāi)或建立一個(gè)文本文件,允許讀寫
            “at+”     ?讀寫打開(kāi)一個(gè)文本文件,允許讀,或在文件末追加數(shù)?據(jù)
            “rb+”     ?讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀和寫?
            “wb+”     ?讀寫打開(kāi)或建立一個(gè)二進(jìn)制文件,允許讀和寫
            “ab+”?     讀寫打開(kāi)一個(gè)二進(jìn)制文件,允許讀,或在文件末追加數(shù)據(jù)

            對(duì)于文件使用方式有以下幾點(diǎn)說(shuō)明:
            1.?文件使用方式由r,w,a,t,b,+六個(gè)字符拼成,各字符的含義是:
            r(read):?讀
            w(write):?寫
            a(append):?追加
            t(text):?文本文件,可省略不寫
            b(banary):?二進(jìn)制文件
            +:?讀和寫

            2.?凡用“r”打開(kāi)一個(gè)文件時(shí),該文件必須已經(jīng)存在,?且只能從該文件讀出。

            3.?用“w”打開(kāi)的文件只能向該文件寫入。?若打開(kāi)的文件不存在,則以指定的文件名建立該文件,若打開(kāi)的文件已經(jīng)存在,則將該文件刪去,重建一個(gè)新文件。

            4.?若要向一個(gè)已存在的文件追加新的信息,只能用“a?”方式打開(kāi)文件。但此時(shí)該文件必須是存在的,否則將會(huì)出錯(cuò)。

            5.?在打開(kāi)一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來(lái)判別是否完成打開(kāi)文件的工作,并作相應(yīng)的處理。因此常用以下程序段打開(kāi)文件:
            if((fp=fopen("c:\\hzk16","rb")==NULL)
            {
            printf("\nerror?on?open?c:\\hzk16?file!");
            getch();
            exit(1);
            }
              這段程序的意義是,如果返回的指針為空,表示不能打開(kāi)C盤根目錄下的hzk16文件,則給出提示信息“error?on?open?c:\?hzk16file!”,下一行g(shù)etch()的功能是從鍵盤輸入一個(gè)字符,但不在屏幕上顯示。在這里,該行的作用是等待,?只有當(dāng)用戶從鍵盤敲任一鍵時(shí),程序才繼續(xù)執(zhí)行,?因此用戶可利用這個(gè)等待時(shí)間閱讀出錯(cuò)提示。敲鍵后執(zhí)行exit(1)退出程序。

            6.?把一個(gè)文本文件讀入內(nèi)存時(shí),要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼,?而把文件以文本方式寫入磁盤時(shí),也要把二進(jìn)制碼轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫要花費(fèi)較多的轉(zhuǎn)換時(shí)間。對(duì)二進(jìn)制文件的讀寫不存在這種轉(zhuǎn)換。

            7.?標(biāo)準(zhǔn)輸入文件(鍵盤),標(biāo)準(zhǔn)輸出文件(顯示器?),標(biāo)準(zhǔn)出錯(cuò)輸出(出錯(cuò)信息)是由系統(tǒng)打開(kāi)的,可直接使用。文件關(guān)閉函數(shù)fclose文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)把文件關(guān)閉,?以避免文件的數(shù)據(jù)丟失等錯(cuò)誤。

            fclose函數(shù)

            調(diào)用的一般形式是:?fclose(文件指針);?例如:
            fclose(fp);?正常完成關(guān)閉文件操作時(shí),fclose函數(shù)返回值為0。如返回非零值則表示有錯(cuò)誤發(fā)生。文件的讀寫對(duì)文件的讀和寫是最常用的文件操作。?

            在C語(yǔ)言中提供了多種文件讀寫的函數(shù):?
            ·字符讀寫函數(shù)?:fgetc和fputc
            ·字符串讀寫函數(shù):fgets和fputs
            ·數(shù)據(jù)塊讀寫函數(shù):freed和fwrite
            ·格式化讀寫函數(shù):fscanf和fprinf

              下面分別予以介紹。使用以上函數(shù)都要求包含頭文件stdio.h。字符讀寫函數(shù)fgetc和fputc字符讀寫函數(shù)是以字符(字節(jié))為單位的讀寫函數(shù)。?每次可從文件讀出或向文件寫入一個(gè)字符。
             
             
             
             
            3
            C?的文件操作/TD>
             

            一、讀字符函數(shù)fgetc

              fgetc函數(shù)的功能是從指定的文件中讀一個(gè)字符,函數(shù)調(diào)用的形式為:?字符變量=fgetc(文件指針);?例如:ch=fgetc(fp);其意義是從打開(kāi)的文件fp中讀取一個(gè)字符并送入ch中。

              對(duì)于fgetc函數(shù)的使用有以下幾點(diǎn)說(shuō)明:
            1.?在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開(kāi)的。

            2.?讀取字符的結(jié)果也可以不向字符變量賦值,例如:fgetc(fp);但是讀出的字符不能保存。

            3.?在文件內(nèi)部有一個(gè)位置指針。用來(lái)指向文件的當(dāng)前讀寫字節(jié)。在文件打開(kāi)時(shí),該指針總是指向文件的第一個(gè)字節(jié)。使用fgetc?函數(shù)后,?該位置指針將向后移動(dòng)一個(gè)字節(jié)。?因此可連續(xù)多次使用fgetc函數(shù),讀取多個(gè)字符。?應(yīng)注意文件指針和文件內(nèi)部的位置指針不是一回事。文件指針是指向整個(gè)文件的,須在程序中定義說(shuō)明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均向后移動(dòng),它不需在程序中定義說(shuō)明,而是由系統(tǒng)自動(dòng)設(shè)置的。

            [例10.1]讀入文件e10-1.c,在屏幕上輸出。
            #include
            main()
            {
            FILE?*fp;
            char?ch;
            if((fp=fopen("e10_1.c","rt"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            ch=fgetc(fp);
            while?(ch!=EOF)
            {
            putchar(ch);
            ch=fgetc(fp);
            }
            fclose(fp);
            }
              本例程序的功能是從文件中逐個(gè)讀取字符,在屏幕上顯示。?程序定義了文件指針fp,以讀文本文件方式打開(kāi)文件“e10_1.c”,?并使fp指向該文件。如打開(kāi)文件出錯(cuò),?給出提示并退出程序。程序第12行先讀出一個(gè)字符,然后進(jìn)入循環(huán),?只要讀出的字符不是文件結(jié)束標(biāo)志(每個(gè)文件末有一結(jié)束標(biāo)志EOF)就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi)部的位置指針向后移動(dòng)一個(gè)字符,文件結(jié)束時(shí),該指針指向EOF。執(zhí)行本程序?qū)@示整個(gè)文件。

            二、寫字符函數(shù)fputc

              fputc函數(shù)的功能是把一個(gè)字符寫入指定的文件中,函數(shù)調(diào)用的?形式為:?fputc(字符量,文件指針);?其中,待寫入的字符量可以是字符常量或變量,例如:fputc('a',fp);其意義是把字符a寫入fp所指向的文件中。

              對(duì)于fputc函數(shù)的使用也要說(shuō)明幾點(diǎn):
            1.?被寫入的文件可以用、寫、讀寫,追加方式打開(kāi),用寫或讀寫方式打開(kāi)一個(gè)已存在的文件時(shí)將清除原有的文件內(nèi)容,寫入字符從文件首開(kāi)始。如需保留原有文件內(nèi)容,希望寫入的字符以文件末開(kāi)始存放,必須以追加方式打開(kāi)文件。被寫入的文件若不存在,則創(chuàng)建該文件。

            2.?每寫入一個(gè)字符,文件內(nèi)部位置指針向后移動(dòng)一個(gè)字節(jié)。

            3.?fputc函數(shù)有一個(gè)返回值,如寫入成功則返回寫入的字符,?否則返回一個(gè)EOF。可用此來(lái)判斷寫入是否成功。

            [例10.2]從鍵盤輸入一行字符,寫入一個(gè)文件,?再把該文件內(nèi)容讀出顯示在屏幕上。
            #include
            main()
            {
            FILE?*fp;
            char?ch;
            if((fp=fopen("string","wt+"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            printf("input?a?string:\n");
            ch=getchar();
            while?(ch!='\n')
            {
            fputc(ch,fp);
            ch=getchar();
            }
            rewind(fp);
            ch=fgetc(fp);
            while(ch!=EOF)
            {
            putchar(ch);
            ch=fgetc(fp);
            }
            printf("\n");
            fclose(fp);
            }
              程序中第6行以讀寫文本文件方式打開(kāi)文件string。程序第13行從鍵盤讀入一個(gè)字符后進(jìn)入循環(huán),當(dāng)讀入字符不為回車符時(shí),?則把該字符寫入文件之中,然后繼續(xù)從鍵盤讀入下一字符。?每輸入一個(gè)字符,文件內(nèi)部位置指針向后移動(dòng)一個(gè)字節(jié)。寫入完畢,?該指針已指向文件末。如要把文件從頭讀出,須把指針移向文件頭,?程序第19行rewind函數(shù)用于把fp所指文件的內(nèi)部位置指針移到文件頭。?第20至25行用于讀出文件中的一行內(nèi)容。

            [例10.3]把命令行參數(shù)中的前一個(gè)文件名標(biāo)識(shí)的文件,?復(fù)制到后一個(gè)文件名標(biāo)識(shí)的文件中,?如命令行中只有一個(gè)文件名則把該文件寫到標(biāo)準(zhǔn)輸出文件(顯示器)中。
             
             
             
             
            4
            C?的文件操作/TD>
             
            #include
            main(int?argc,char?*argv[])
            {
            FILE?*fp1,*fp2;
            char?ch;
            if(argc==1)
            {
            printf("have?not?enter?file?name?strike?any?key?exit");
            getch();
            exit(0);
            }
            if((fp1=fopen(argv[1],"rt"))==NULL)
            {
            printf("Cannot?open?%s\n",argv[1]);
            getch();
            exit(1);
            }
            if(argc==2)?fp2=stdout;
            else?if((fp2=fopen(argv[2],"wt+"))==NULL)
            {
            printf("Cannot?open?%s\n",argv[1]);
            getch();
            exit(1);
            }
            while((ch=fgetc(fp1))!=EOF)
            fputc(ch,fp2);
            fclose(fp1);
            fclose(fp2);
            }
              本程序?yàn)閹⒌膍ain函數(shù)。程序中定義了兩個(gè)文件指針?fp1?和fp2,分別指向命令行參數(shù)中給出的文件。如命令行參數(shù)中沒(méi)有給出文件名,則給出提示信息。程序第18行表示如果只給出一個(gè)文件名,則使fp2指向標(biāo)準(zhǔn)輸出文件(即顯示器)。程序第25行至28行用循環(huán)語(yǔ)句逐個(gè)讀出文件1中的字符再送到文件2中。再次運(yùn)行時(shí),給出了一個(gè)文件名(由例10.2所建立的文件),?故輸出給標(biāo)準(zhǔn)輸出文件stdout,即在顯示器上顯示文件內(nèi)容。第三次運(yùn)行,給出了二個(gè)文件名,因此把string中的內(nèi)容讀出,寫入到OK之中??捎肈OS命令type顯示OK的內(nèi)容:字符串讀寫函數(shù)fgets和fputs

            一、讀字符串函數(shù)fgets函數(shù)的功能是從指定的文件中讀一個(gè)字符串到字符數(shù)組中,函數(shù)調(diào)用的形式為:?fgets(字符數(shù)組名,n,文件指針);?其中的n是一個(gè)正整數(shù)。表示從文件中讀出的字符串不超過(guò)?n-1個(gè)字符。在讀入的最后一個(gè)字符后加上串結(jié)束標(biāo)志'\0'。例如:fgets(str,n,fp);的意義是從fp所指的文件中讀出n-1個(gè)字符送入字符數(shù)組str中。
            [例10.4]從e10_1.c文件中讀入一個(gè)含10個(gè)字符的字符串。
            #include
            main()
            {
            FILE?*fp;
            char?str[11];
            if((fp=fopen("e10_1.c","rt"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            fgets(str,11,fp);
            printf("%s",str);
            fclose(fp);
            }
              本例定義了一個(gè)字符數(shù)組str共11個(gè)字節(jié),在以讀文本文件方式打開(kāi)文件e101.c后,從中讀出10個(gè)字符送入str數(shù)組,在數(shù)組最后一個(gè)單元內(nèi)將加上'\0',然后在屏幕上顯示輸出str數(shù)組。輸出的十個(gè)字符正是例10.1程序的前十個(gè)字符。

              對(duì)fgets函數(shù)有兩點(diǎn)說(shuō)明:
            1.?在讀出n-1個(gè)字符之前,如遇到了換行符或EOF,則讀出結(jié)束。
            2.?fgets函數(shù)也有返回值,其返回值是字符數(shù)組的首地址。

            二、寫字符串函數(shù)fputs

            fputs函數(shù)的功能是向指定的文件寫入一個(gè)字符串,其調(diào)用形式為:?fputs(字符串,文件指針)?其中字符串可以是字符串常量,也可以是字符數(shù)組名,?或指針?變量,例如:
            fputs(“abcd“,fp);
            其意義是把字符串“abcd”寫入fp所指的文件之中。[例10.5]在例10.2中建立的文件string中追加一個(gè)字符串。
            #include
            main()
            {
            FILE?*fp;
            char?ch,st[20];
            if((fp=fopen("string","at+"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            printf("input?a?string:\n");
            scanf("%s",st);
            fputs(st,fp);
            rewind(fp);
            ch=fgetc(fp);
            while(ch!=EOF)
            {
            putchar(ch);
            ch=fgetc(fp);
            }
            printf("\n");
            fclose(fp);
            }
              本例要求在string文件末加寫字符串,因此,在程序第6行以追加讀寫文本文件的方式打開(kāi)文件string?。?然后輸入字符串,?并用fputs函數(shù)把該串寫入文件string。在程序15行用rewind函數(shù)把文件內(nèi)部位置指針移到文件首。?再進(jìn)入循環(huán)逐個(gè)顯示當(dāng)前文件中的全部?jī)?nèi)容。

            數(shù)據(jù)塊讀寫函數(shù)fread和fwrite

             ?。谜Z(yǔ)言還提供了用于整塊數(shù)據(jù)的讀寫函數(shù)。?可用來(lái)讀寫一組數(shù)據(jù),如一個(gè)數(shù)組元素,一個(gè)結(jié)構(gòu)變量的值等。讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:?fread(buffer,size,count,fp);?寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:?fwrite(buffer,size,count,fp);?其中buffer是一個(gè)指針,在fread函數(shù)中,它表示存放輸入數(shù)據(jù)的首地址。在fwrite函數(shù)中,它表示存放輸出數(shù)據(jù)的首地址。?size?表示數(shù)據(jù)塊的字節(jié)數(shù)。count?表示要讀寫的數(shù)據(jù)塊塊數(shù)。fp?表示文件指針。
             
             
              ??
             
            5
            C?的文件操作/TD>
             
            例如:
            fread(fa,4,5,fp);?其意義是從fp所指的文件中,每次讀4個(gè)字節(jié)(一個(gè)實(shí)數(shù))送入實(shí)數(shù)組fa中,連續(xù)讀5次,即讀5個(gè)實(shí)數(shù)到fa中。
            [例10.6]從鍵盤輸入兩個(gè)學(xué)生數(shù)據(jù),寫入一個(gè)文件中,?再讀出這兩個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。
            #include
            struct?stu
            {
            char?name[10];
            int?num;
            int?age;
            char?addr[15];
            }boya[2],boyb[2],*pp,*qq;
            main()
            {
            FILE?*fp;
            char?ch;
            int?i;
            pp=boya;
            qq=boyb;
            if((fp=fopen("stu_list","wb+"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            printf("\ninput?data\n");
            for(i=0;i<2;i++,pp++)
            scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
            pp=boya;
            fwrite(pp,sizeof(struct?stu),2,fp);
            rewind(fp);
            fread(qq,sizeof(struct?stu),2,fp);
            printf("\n\nname\tnumber?age?addr\n");
            for(i=0;i<2;i++,qq++)
            printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);
            fclose(fp);
            }
              本例程序定義了一個(gè)結(jié)構(gòu)stu,說(shuō)明了兩個(gè)結(jié)構(gòu)數(shù)組boya和?boyb以及兩個(gè)結(jié)構(gòu)指針變量pp和qq。pp指向boya,qq指向boyb。程序第16行以讀寫方式打開(kāi)二進(jìn)制文件“stu_list”,輸入二個(gè)學(xué)生數(shù)據(jù)之后,寫入該文件中,?然后把文件內(nèi)部位置指針移到文件首,讀出兩塊學(xué)生數(shù)據(jù)后,在屏幕上顯示。

            格式化讀寫函數(shù)fscanf和fprintf

            fscanf函數(shù),fprintf函數(shù)與前面使用的scanf和printf?函數(shù)的功能相似,都是格式化讀寫函數(shù)。?兩者的區(qū)別在于?fscanf?函數(shù)和fprintf函數(shù)的讀寫對(duì)象不是鍵盤和顯示器,而是磁盤文件。這兩個(gè)函數(shù)的調(diào)用格式為:?fscanf(文件指針,格式字符串,輸入表列);?fprintf(文件指針,格式字符串,輸出表列);?例如:
            fscanf(fp,"%d%s",&i,s);
            fprintf(fp,"%d%c",j,ch);?
            用fscanf和fprintf函數(shù)也可以完成例10.6的問(wèn)題。修改后的程序如例10.7所示。
            [例10.7]
            #include
            struct?stu
            {
            char?name[10];
            int?num;
            int?age;
            char?addr[15];
            }boya[2],boyb[2],*pp,*qq;
            main()
            {
            FILE?*fp;
            char?ch;
            int?i;
            pp=boya;
            qq=boyb;
            if((fp=fopen("stu_list","wb+"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            printf("\ninput?data\n");
            for(i=0;i<2;i++,pp++)
            scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
            pp=boya;
            for(i=0;i<2;i++,pp++)
            fprintf(fp,"%s?%d?%d?%s\n",pp->name,pp->num,pp->age,pp->
            addr);
            rewind(fp);
            for(i=0;i<2;i++,qq++)
            fscanf(fp,"%s?%d?%d?%s\n",qq->name,&qq->num,&qq->age,qq->addr);
            printf("\n\nname\tnumber?age?addr\n");
            qq=boyb;
            for(i=0;i<2;i++,qq++)
            printf("%s\t%5d?%7d?%s\n",qq->name,qq->num,?qq->age,
            qq->addr);
            fclose(fp);
            }
              與例10.6相比,本程序中fscanf和fprintf函數(shù)每次只能讀寫一個(gè)結(jié)構(gòu)數(shù)組元素,因此采用了循環(huán)語(yǔ)句來(lái)讀寫全部數(shù)組元素。?還要注意指針變量pp,qq由于循環(huán)改變了它們的值,因此在程序的25和32行分別對(duì)它們重新賦予了數(shù)組的首地址。

            文件的隨機(jī)讀寫

              前面介紹的對(duì)文件的讀寫方式都是順序讀寫,?即讀寫文件只能從頭開(kāi)始,順序讀寫各個(gè)數(shù)據(jù)。?但在實(shí)際問(wèn)題中常要求只讀寫文件中某一指定的部分。?為了解決這個(gè)問(wèn)題可移動(dòng)文件內(nèi)部的位置指針到需要讀寫的位置,再進(jìn)行讀寫,這種讀寫稱為隨機(jī)讀寫。?實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵是要按要求移動(dòng)位置指針,這稱為文件的定位。文件定位移動(dòng)文件內(nèi)部位置指針的函數(shù)主要有兩個(gè),?即?rewind?函數(shù)和fseek函數(shù)。

              rewind函數(shù)前面已多次使用過(guò),其調(diào)用形式為:?rewind(文件指針);?它的功能是把文件內(nèi)部的位置指針移到文件首。?下面主要介紹
            fseek函數(shù)。

              fseek函數(shù)用來(lái)移動(dòng)文件內(nèi)部位置指針,其調(diào)用形式為:?fseek(文件指針,位移量,起始點(diǎn));?其中:“文件指針”指向被移動(dòng)的文件。?“位移量”表示移動(dòng)的字節(jié)數(shù),要求位移量是long型數(shù)據(jù),以便在文件長(zhǎng)度大于64KB?時(shí)不會(huì)出錯(cuò)。當(dāng)用常量表示位移量時(shí),要求加后綴“L”?!捌鹗键c(diǎn)”表示從何處開(kāi)始計(jì)算位移量,規(guī)定的起始點(diǎn)有三種:文件首,當(dāng)前位置和文件尾。
             
             
              ??
             
            6
            C?的文件操作/TD>
             
            其表示方法如表10.2。?
            起始點(diǎn)?   表示符號(hào)?   數(shù)字表示
            ——————————————————————————
            文件首?   SEEK—SET    0
            當(dāng)前位置?  SEEK—CUR    1
            文件末尾?  SEEK—END?   ?2
            例如:
            fseek(fp,100L,0);其意義是把位置指針移到離文件首100個(gè)字節(jié)處。還要說(shuō)明的是fseek函數(shù)一般用于二進(jìn)制文件。在文本文件中由于要進(jìn)行轉(zhuǎn)換,故往往計(jì)算的位置會(huì)出現(xiàn)錯(cuò)誤。文件的隨機(jī)讀寫在移動(dòng)位置指針之后,?即可用前面介紹的任一種讀寫函數(shù)進(jìn)行讀寫。由于一般是讀寫一個(gè)數(shù)據(jù)據(jù)塊,因此常用fread和fwrite函數(shù)。下面用例題來(lái)說(shuō)明文件的隨機(jī)讀寫。

            [例10.8]在學(xué)生文件stu?list中讀出第二個(gè)學(xué)生的數(shù)據(jù)。
            #include
            struct?stu
            {
            char?name[10];
            int?num;
            int?age;
            char?addr[15];
            }boy,*qq;
            main()
            {
            FILE?*fp;
            char?ch;
            int?i=1;
            qq=&boy;
            if((fp=fopen("stu_list","rb"))==NULL)
            {
            printf("Cannot?open?file?strike?any?key?exit!");
            getch();
            exit(1);
            }
            rewind(fp);
            fseek(fp,i*sizeof(struct?stu),0);
            fread(qq,sizeof(struct?stu),1,fp);
            printf("\n\nname\tnumber?age?addr\n");
            printf("%s\t%5d?%7d?%s\n",qq->name,qq->num,qq->age,
            qq->addr);
            }
              文件stu_list已由例10.6的程序建立,本程序用隨機(jī)讀出的方法讀出第二個(gè)學(xué)生的數(shù)據(jù)。程序中定義boy為stu類型變量,qq為指向boy的指針。以讀二進(jìn)制文件方式打開(kāi)文件,程序第22行移動(dòng)文件位置指針。其中的i值為1,表示從文件頭開(kāi)始,移動(dòng)一個(gè)stu類型的長(zhǎng)度,?然后再讀出的數(shù)據(jù)即為第二個(gè)學(xué)生的數(shù)據(jù)。

            文件檢測(cè)函數(shù)

            C語(yǔ)言中常用的文件檢測(cè)函數(shù)有以下幾個(gè)。
            一、文件結(jié)束檢測(cè)函數(shù)feof函數(shù)調(diào)用格式:?feof(文件指針);?
            功能:判斷文件是否處于文件結(jié)束位置,如文件結(jié)束,則返回值為1,否則為0。

            二、讀寫文件出錯(cuò)檢測(cè)函數(shù)ferror函數(shù)調(diào)用格式:?ferror(文件指針);?
            功能:檢查文件在用各種輸入輸出函數(shù)進(jìn)行讀寫時(shí)是否出錯(cuò)。?如ferror返回值為0表示未出錯(cuò),否則表示有錯(cuò)。

            三、文件出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志置0函數(shù)clearerr函數(shù)調(diào)用格式:?clearerr(文件指針);?
            功能:本函數(shù)用于清除出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志,使它們?yōu)?值。

            C庫(kù)文件

            C系統(tǒng)提供了豐富的系統(tǒng)文件,稱為庫(kù)文件,C的庫(kù)文件分為兩類,一類是擴(kuò)展名為".h"的文件,稱為頭文件,?在前面的包含命令中我們已多次使用過(guò)。在".h"文件中包含了常量定義、?類型定義、宏定義、函數(shù)原型以及各種編譯選擇設(shè)置等信息。另一類是函數(shù)庫(kù),包括了各種函數(shù)的目標(biāo)代碼,供用戶在程序中調(diào)用。?通常在程序中調(diào)用一個(gè)庫(kù)函數(shù)時(shí),要在調(diào)用之前包含該函數(shù)原型所在的".h"?文件。
            在附錄中給出了全部庫(kù)函數(shù)。
            ALLOC.H?   說(shuō)明內(nèi)存管理函數(shù)(分配、釋放等)。
            ASSERT.H? ? 定義?assert調(diào)試宏。
            BIOS.H?  ? 說(shuō)明調(diào)用IBM—PC?ROM?BIOS子程序的各個(gè)函數(shù)。
            CONIO.H?   說(shuō)明調(diào)用DOS控制臺(tái)I/O子程序的各個(gè)函數(shù)。
            CTYPE.H?   包含有關(guān)字符分類及轉(zhuǎn)換的名類信息(如?isalpha和toascii等)。
            DIR.H?    包含有關(guān)目錄和路徑的結(jié)構(gòu)、宏定義和函數(shù)。
            DOS.H?    定義和說(shuō)明MSDOS和8086調(diào)用的一些常量和函數(shù)。
            ERRON.H?   定義錯(cuò)誤代碼的助記符。
            FCNTL.H?   定義在與open庫(kù)子程序連接時(shí)的符號(hào)常量。
            FLOAT.H?   包含有關(guān)浮點(diǎn)運(yùn)算的一些參數(shù)和函數(shù)。
            GRAPHICS.H? ?說(shuō)明有關(guān)圖形功能的各個(gè)函數(shù),圖形錯(cuò)誤代碼的常量定義,正對(duì)不同驅(qū)動(dòng)程序的各種顏色值,及函數(shù)用到的一些特殊結(jié)構(gòu)。
            IO.H?    ?包含低級(jí)I/O子程序的結(jié)構(gòu)和說(shuō)明。
            LIMIT.H?   包含各環(huán)境參數(shù)、編譯時(shí)間限制、數(shù)的范圍等信息。
            MATH.H?   ?說(shuō)明數(shù)學(xué)運(yùn)算函數(shù),還定了?HUGE?VAL?宏,?說(shuō)明了matherr和matherr子程序用到的特殊結(jié)構(gòu)。
            MEM.H?    說(shuō)明一些內(nèi)存操作函數(shù)(其中大多數(shù)也在STRING.H?中說(shuō)明)。
            PROCESS.H?  說(shuō)明進(jìn)程管理的各個(gè)函數(shù),spawn…和EXEC?…函數(shù)的結(jié)構(gòu)說(shuō)明。
            SETJMP.H?  ?定義longjmp和setjmp函數(shù)用到的jmp?buf類型,?說(shuō)明這兩個(gè)函數(shù)。
            SHARE.H?   定義文件共享函數(shù)的參數(shù)。
            SIGNAL.H?  ?定義SIG[ZZ(Z]?[ZZ)]IGN和SIG[ZZ(Z]?[ZZ)]DFL常量,說(shuō)明rajse和signal兩個(gè)函數(shù)。
            STDARG.H?  ?定義讀函數(shù)參數(shù)表的宏。(如vprintf,vscarf函數(shù))。
            STDDEF.H?  ?定義一些公共數(shù)據(jù)類型和宏。
            STDIO.H?   定義Kernighan和Ritchie在Unix?System?V?中定義的標(biāo)準(zhǔn)和擴(kuò)展的類型和宏。還定義標(biāo)準(zhǔn)I/O?預(yù)定義流:stdin,stdout和stderr,說(shuō)明?I/O流子程序。
            STDLIB.H?  ?說(shuō)明一些常用的子程序:轉(zhuǎn)換子程序、搜索/?排序子程序等。
            STRING.H?  ?說(shuō)明一些串操作和內(nèi)存操作函數(shù)。
            SYS\STAT.H? ?定義在打開(kāi)和創(chuàng)建文件時(shí)用到的一些符號(hào)常量。
            SYS\TYPES.H? 說(shuō)明ftime函數(shù)和timeb結(jié)構(gòu)。
            SYS\TIME.H? ?定義時(shí)間的類型time[ZZ(Z]?[ZZ)]t。
            TIME.H?   ?定義時(shí)間轉(zhuǎn)換子程序asctime、localtime和gmtime的結(jié)構(gòu),ctime、?difftime、?gmtime、?localtime和stime用到的類型,并提供這些函數(shù)的原型。
            VALUE.H?   定義一些重要常量,?包括依賴于機(jī)器硬件的和為與Unix?System?V相兼容而說(shuō)明的一些常量,包括浮點(diǎn)和雙精度值的范圍。

            posted @ 2006-09-06 10:08 啤酒 閱讀(884) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題  下一頁(yè)

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆檔案

            收藏夾

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久婷婷五月综合国产尤物app| 欧美麻豆久久久久久中文| 国产精品美女久久久久av爽| 久久久黄片| 99久久免费国产精品热| 久久人妻少妇嫩草AV蜜桃| 久久婷婷五月综合国产尤物app | 久久久久久久久久久久中文字幕| 久久久精品人妻一区二区三区蜜桃| 久久这里只有精品首页| 久久久久亚洲av成人无码电影| 欧美粉嫩小泬久久久久久久| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 久久久精品人妻一区二区三区四| 一本久久a久久精品综合夜夜| 亚洲国产精品无码久久一线 | 亚洲欧美成人久久综合中文网| 久久99精品国产麻豆宅宅| 日产精品久久久久久久| 国产精品欧美久久久久无广告| 亚洲人成网亚洲欧洲无码久久| 久久无码精品一区二区三区| 亚洲国产另类久久久精品小说 | 精品久久久久久无码人妻热| 99久久99久久精品国产片果冻| 久久久久亚洲AV无码专区首JN| 99久久精品国产一区二区| 国产精品99久久久久久猫咪 | 久久久无码精品午夜| 久久亚洲AV成人无码国产| 亚洲国产天堂久久久久久| 国产成人精品综合久久久| 色偷偷久久一区二区三区| 久久亚洲精品无码aⅴ大香| 999久久久免费国产精品播放| 久久婷婷五月综合97色一本一本 | 93精91精品国产综合久久香蕉| 久久男人Av资源网站无码软件| 亚洲国产高清精品线久久| 久久se精品一区二区影院 | 中文字幕热久久久久久久|