;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
绗崄绔 鏂囦欢 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> C&C++ >> C璇█鏁欑▼ >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

绗崄绔 鏂囦欢

鍙戝竷: 2008-6-26 21:05 |  浣滆: admin |   鏌ョ湅: 41娆

绗崄绔 鏂囦欢

閫氳繃鏈珷鐨勫涔犲悓瀛︿滑搴斿綋鎺屾彙鏂囦欢鐨勬蹇碉紝鐗瑰埆瑕佺悊瑙i敭鐩樿緭鍏ュ拰鏄剧ず鍣ㄨ緭鍑轰笌纾佺洏璇诲啓鐨勮仈绯讳笌鍖哄埆锛涙帉鎻℃枃浠剁殑鎵撳紑銆佸叧闂柟娉曪紱鏍囧噯鏂囦欢鎿嶄綔鍑芥暟锛屾枃浠剁殑椤哄簭璇诲啓涓庨殢鏈鸿鍐欑殑瀹炵幇鏂规硶銆傛帉鎻$敤鏂囦欢瀹炵幇鏁版嵁瀛樺偍鐨勫叿浣撳疄渚嬨

10.1 C鏂囦欢姒傝堪

鏂囦欢鏄▼搴忚璁′腑涓涓噸瑕佺殑姒傚康銆傛墍璋撯滄枃浠垛濅竴鑸寚瀛樺偍鍦ㄥ閮ㄤ粙璐ㄤ笂鐨勬暟鎹泦鍚堛侰璇█鎶婃枃浠剁殑姒傚康鎵╁ぇ鍖栦簡锛屽畠灏嗕竴浜涜澶囦篃褰撲綔鏂囦欢鏉ュ鐞嗭紝杩欐牱灏变娇绋嬪簭璁捐鏇村姞鍏锋湁鐏垫椿鎬у拰閫氱敤鎬с傝繖涓鐐瑰緢閲嶈锛屽氨鏄鍦–璇█鐪嬫潵鏂囦欢涓嶅厜鏄暟鎹殑闆嗗悎锛屽畠杩樺彲鑳芥槸璁惧锛屽閿洏鏄剧ず鍣ㄥ拰鎵撳嵃鏈恒

涓鑸岃█锛屾垜浠悊瑙g殑鏂囦欢杩樻槸鎸囧瓨鍌ㄥ湪澶栭儴浠嬭川涓婃暟鎹殑闆嗗悎銆傛搷浣滅郴缁熸槸浠ユ枃浠朵负鍗曚綅瀵规暟鎹繘琛岀鐞嗙殑锛屼篃灏辨槸璇达紝濡傛灉鎯虫壘鍒板瓨鍌ㄥ湪澶栭儴浠嬭川涓婄殑鏁版嵁锛屽繀椤诲厛鎸夋枃浠跺悕鎵惧埌鎵鎸囧畾鐨勬枃浠讹紝鐒跺悗鍐嶄粠璇ユ枃浠朵腑璇诲彇鏁版嵁銆傚悜澶栭儴浠嬭川涓婂瓨鍌ㄦ暟鎹篃蹇呴』鍏堝缓绔嬩竴涓枃浠讹紝鎵嶈兘鍚戝畠杈撳嚭锛堝啓锛夋暟鎹

鎴戜滑鐭ラ亾浠庨敭鐩樹笂杈撳叆鐨勬暟鎹槸瀛樻斁鍦ㄥ唴瀛樹腑锛屾樉绀哄櫒鍙互灏嗗唴瀛樹腑鐨勬暟鎹樉绀鸿緭鍑恒傛枃浠朵繚瀛樺湪澶栭儴浠嬭川涓紝鈥滆鈥濇枃浠舵搷浣滃氨鏄皢纾佺洏鏂囦欢杈撳叆鍒板唴瀛樹腑锛屸滃啓鈥濇枃浠舵搷浣滃氨鏄皢鍐呭瓨涓殑鏁版嵁杈撳嚭鍒板閮ㄤ粙璐ㄤ腑銆傝繖涓鐐瑰笇鏈涘悓瀛︿滑鑳借鐪熺悊瑙e拰浣撲細銆傚畠鏄涔犳枃浠惰繖涓绔犻潰涓寸殑棣栬闂銆

C璇█灏嗘枃浠剁湅鎴愭槸瀛樺偍鍦ㄥ閮ㄤ粙璐ㄤ腑鐨勫瓧绗﹂泦銆傛牴鎹暟鎹湪澶栭儴浠嬭川涓瓨鍌ㄧ殑涓嶅悓鏂瑰紡锛孋璇█鐨勬枃浠跺張鍒嗕负ASCII鏂囦欢鍜屼簩杩涘埗鏂囦欢銆

ASCII鏂囦欢锛氬張绉颁负鏂囨湰鏂囦欢锛坱ext锛夋枃浠讹紝鐗圭偣鏄暟鎹湪澶栭儴浠嬭川涓竴涓瓧鑺傚瓨鏀句竴涓狝SCII鐮佸瓧绗︺

浜岃繘鍒舵枃浠讹細鏄妸鍐呭瓨涓殑鏁版嵁鎸夊叾鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄥ舰寮忓師鏍疯緭鍑哄埌澶栭儴浠嬭川涓婂瓨鏀俱

渚嬶細濡傛灉瑕佸瓨鏀炬暣鏁12345锛屾垜浠煡閬撴暣鏁板湪鍐呭瓨涓槸鍗犱袱涓瓧鑺傜殑锛12345浣滀负鏂囨湰鏂囦欢鍜屼綔涓轰簩杩涘埗鏂囦欢鍦ㄥ唴瀛樹腑瀛樻斁鏈夌潃杈冨ぇ鐨勫尯鍒

锛12345锛10=锛11000000111001锛2

浠庝笂闈㈠彲浠ユ竻妤氱殑鐪嬪埌锛屼互ASCII褰㈠紡瀛樻斁闇瑕佸崰鐢5涓瓧鑺傦紝浠ヤ簩杩涘埗褰㈠紡鍙渶瑕佷簩涓瓧鑺傘

鍥犳涓涓狢鏂囦欢鏄竴涓瓧鑺傛祦鎴栦簩杩涘埗娴併傛墍璋撯滄祦鈥濇槸涓绯诲垪瀛楄妭锛屽畠鍙互浠庝竴绉嶇被鍨嬬殑璁惧娴佸悜鍙︿竴绉嶇被鍨嬬殑璁惧銆傚氨鏂囦欢娴佹潵璇达紝閫氳繃娴佽繛鎺ヨ捣鏉ョ殑涓や釜璁惧鏄绠楁満鐨勫唴瀛樺拰纾佺洏涓婄殑鏂囦欢銆

鍦–璇█涓鏂囦欢鐨勫瓨鍙栨槸浠ュ瓧绗︼紙瀛楄妭锛変负鍗曚綅鐨勶紝杈撳叆杈撳嚭鏁版嵁鐨勫紑濮嬪拰缁撴潫浠呭彈绋嬪簭鎺у埗鑰屼笉鍙楃墿鐞嗙鍙凤紙濡傚洖杞︽崲琛岀锛夋帶鍒躲備篃灏辨槸璇达紝鍦ㄨ緭鍑烘椂涓嶄細鑷姩澧炲姞鍥炶溅鎹㈣绗︿互浣滀负缁撴潫鐨勬爣蹇楋紝杈撳叆鏃朵笉浠ュ洖杞︽崲琛岀涓鸿褰曠殑闂撮殧銆傛垜浠妸杩欑鏂囦欢绉颁箣涓烘祦寮忔枃浠躲

C璇█澶勭悊鏂囦欢鐨勬柟娉曟槸閲囩敤鈥滅紦鍐叉枃浠剁郴缁熲濈殑鏂瑰紡銆傛墍璋撶紦鍐叉枃浠剁殑鏂瑰紡鏄寚绯荤粺鑷姩鍦板湪鍐呭瓨鍖轰负姣忎竴涓鍦ㄤ娇鐢ㄧ殑鏂囦欢寮杈熶竴涓紦鍐插尯銆備粠鍐呭瓨鍚戠鐩樿緭鍑烘暟鎹繀椤诲厛閫佸埌鍐呭瓨涓殑缂撳啿鍖猴紝瑁呮弧缂撳啿鍖哄悗鎵嶄竴璧烽佸埌纾佺洏銆傚鏋滀粠纾佺洏鍚戝唴瀛樿鍏ユ暟鎹紝鍒欎粠纾佺洏鏂囦欢涓厛灏嗕竴鎵规暟鎹緭鍏ュ埌鍐呭瓨缂撳啿鍖猴紝鐒跺悗鍐嶄粠缂撳啿鍖洪愪釜鍦板皢鏁版嵁閫佸埌绋嬪簭鏁版嵁鍖猴紝濡傚浘10.1鎵绀恒

鍥10.1

10.2 鏂囦欢鐨勬墦寮涓庡叧闂

鏂囦欢鍦ㄤ娇鐢紙璇籠鍐欙級涔嬪墠蹇呴』鍏堚滄墦寮鈥濊鏂囦欢锛屽湪浣跨敤缁撴潫涔嬪悗搴斿綋鍏抽棴璇ユ枃浠躲

10.2.1 鏂囦欢鐨勬墦寮锛坒open()鍑芥暟锛

鏍囧噯杈撳叆杈撳嚭鍑芥暟搴擄紝鐢╢open( )鍑芥暟鏉ュ疄鐜版墦寮鏂囦欢銆俧open鍑芥暟鐨勮皟鐢ㄦ柟寮忓涓嬶細

鍏朵腑FILE涓虹郴缁熷畾涔夌殑鏈夊叧鏂囦欢淇℃伅鐨勭粨鏋勪綋绫诲瀷锛屾湁鍏冲叿浣撳唴瀹瑰悓瀛︿滑鍙互鏌ョ湅鐩稿叧涔︾睄锛岃繖閲屼笉鍐嶅彊杩般*fp鏄寚鍚戞枃浠剁殑鎸囬拡鍙橀噺銆

fopen 鍑芥暟鏈変袱涓弬鏁帮細

鏂囦欢鍚嶏細琚墦寮鐨勬枃浠跺悕瀛椼

浣跨敤鏂囦欢鏂瑰紡锛氬寘鎷鏂囦欢鏄杩樻槸鍐欑瓑銆傦紙瑙佽〃10.1鏂囦欢浣跨敤鏂瑰紡琛級

鎵撳紑鏂囦欢灏辨槸寤虹珛鏂囦欢鎸囬拡涓庢枃浠剁殑鑱旂郴锛屽嵆寤虹珛鏂囦欢鎸囬拡涓庢枃浠跺悕鐨勫搴斿叧绯汇

鍚屽浠兂涓鎯砯open鍑芥暟鐨勮繑鍥炲兼槸浠涔堬紵

杩斿洖鍊兼槸鏂囦欢棣栧湴鍧锛屾樉鐒秄p鏄寚鍚戜簡鏂囦欢鐨勯鍦板潃銆

渚嬪锛

fp=fopen(鈥渁1鈥,鈥渞鈥)锛

琚墦寮鐨勬枃浠跺悕鍙玜1锛屽苟涓斾互鈥滆鈥濇柟寮忔墦寮銆

fp鎸囧悜鏂囦欢鐨勯鍦板潃锛屽鍥10.2鎵绀恒

鎵撳紑涓涓枃浠舵椂锛岀郴缁熷緱鍒颁笁涓柟闈㈢殑淇℃伅锛

锛1锛夐渶瑕佹墦寮鐨勬枃浠跺悕锛屼篃灏辨槸鍑嗗璁块棶鐨勬枃浠跺悕瀛椼

锛2锛変娇鐢ㄦ枃浠剁殑鏂瑰紡锛堟槸鈥滆鈥濊繕鏄滃啓鈥濓級銆

锛3锛夎鍝竴涓寚閽堝彉閲忔寚鍚戣鎵撳紑鐨勬枃浠躲

鍑犵偣璇存槑锛

琛10.1鏂囦欢浣跨敤鏂瑰紡琛

锛1锛夌敤鈥渞鈥濇柟寮忔墦寮鏂囦欢锛堟棤璁烘槸鈥渞鈥濄佽繕鏄渞b鈥濄佽繕鏄渞+鈥濄佽繕鏄渞b+鈥),鍙兘鐢ㄤ簬鈥滆鈥濓紝鍗崇鐩樻枃浠惰緭鍏ュ埌鍐呭瓨涓傚崈涓囦笉鑳界敤鈥渞鈥濇柟寮忔墦寮涓涓苟涓嶅瓨鍦ㄧ殑鏂囦欢銆

鍥10.2

锛2锛夌敤鈥渨鈥濇柟寮忔墦寮鏂囦欢锛堟棤璁烘槸鈥渨鈥濄佽繕鏄渨b鈥濄佽繕鏄渨+鈥濄佽繕鏄渨b+鈥),鍙兘鐢ㄤ簬鈥滃啓鈥濓紝鍗冲唴瀛樻暟鎹緭鍑哄埌纾佺洏鏂囦欢涓傛墦寮鏂囦欢鏃讹紝濡傛灉鍘熸潵涓嶅瓨鍦ㄨ鏂囦欢锛屽垯鍦ㄦ墦寮鏃舵柊寤轰竴涓互鎸囧畾鍚嶅瓧鍛藉悕鐨勬枃浠讹紝濡傛灉鍘熸潵宸插瓨鍦ㄤ竴涓互璇ユ枃浠跺悕鍛藉悕鐨勬枃浠讹紝鍒欏湪鎵撳紑鏃跺皢璇ユ枃浠跺垹鍘伙紝鐒跺悗閲嶆柊寤虹珛涓涓互璇ュ悕瀛楀懡鍚嶇殑鏂版枃浠躲

锛3锛夊嚒甯︹+鈥濆彿鐨勬墦寮鏂瑰紡锛屾墦寮鏂囦欢鏃舵绘槸鍙堣兘鈥滆鈥濓紝涔熻兘鈥滃啓鈥濄

锛4锛夆渁鈥濇柟寮忔墦寮鏂囦欢鏃讹紝浣嶇疆鎸囬拡绉诲埌鏂囦欢鏈熬锛屽彲浠ュ疄鐜拌拷鍔犳搷浣溿

锛5锛夌敤鈥渂鈥濇柟寮忔墦寮鏂囦欢鏃讹紝鍙互瀵逛簩杩涘埗鏂囦欢杩涜鎿嶄綔銆

锛6锛夊鏋滀互鈥渞鈥濇柟寮忔墦寮涓涓苟涓嶅瓨鍦ㄧ殑鏂囦欢锛屾垨纾佺洏鎹熷潖銆佺鐩樼┖闂翠笉瓒崇瓑鎯呭喌涓嬫墦寮鏂囦欢锛岄兘浼氫娇鎵撳紑鏂囦欢澶辫触銆傛鏃秄open鍑芥暟灏嗚繑鍥炰竴涓┖鎸囬拡NULL銆傛墍浠ュ父鐢ㄤ笅闈㈢殑鏂规硶鎵撳紑涓涓枃浠躲

if((fp=fopen(鈥渇ile1鈥,鈥漴鈥))==NULL)

{

printf(鈥渃annot open this file\n鈥);

exit(0);

}

鎵撳紑鏂囦欢娴佺▼濡傚浘10.3鎵绀恒

鍥10.3

10.2.2 鏂囦欢鐨勫叧闂紙fclose()鍑芥暟锛

涓涓枃浠朵娇鐢ㄥ畬鍚庡簲璇ュ強鏃跺叧闂畠锛屼互闃叉瀹冨啀琚鐢ㄣ傚叧闂枃浠舵搷浣滃畬鎴愪笅闈袱浠朵簨銆

锛1锛夊叧闂枃浠剁紦鍐插尯锛屽皢杩樻病鏈夎婊$殑缂撳啿鍖烘暟鎹緭鍑哄埌纾佺洏鏂囦欢涓紝淇濊瘉鏁版嵁涓嶄涪澶便

锛2锛 鈥滃叧闂濆氨鏄娇鏂囦欢鎸囬拡鍙橀噺涓嶆寚鍚戣鏂囦欢锛屼篃灏辨槸鏂囦欢鎸囬拡鍙橀噺涓庢枃浠垛滆劚閽┾濄傞噴鏀炬枃浠舵寚閽堝彉閲忋

鍏抽棴鏂囦欢鐨勬牸寮忥細

渚嬪锛 fclose(fp);

鍓嶉潰鎴戜滑鏇炬妸鎵撳紑鏂囦欢鏃舵墍甯﹀洖鐨勬寚閽堣祴缁欎簡fp锛岀幇鍦ㄩ氳繃fp鎶婅鏂囦欢鍏抽棴锛屽嵆fp涓嶅啀鎸囧悜璇ユ枃浠躲

fclose鍑芥暟涔熷甫鍥炰竴涓硷紝濡傛灉椤哄埄鍦版墽琛屼簡鍏抽棴鎿嶄綔锛屽垯杩斿洖鍊间负0;鍚﹀垯杩斿洖EOF锛-1锛夈

10.3 鏂囦欢鐨勮鍐

鏂囦欢鎵撳紑涔嬪悗锛屽氨鍙互瀵瑰畠杩涜璇诲啓浜嗐傞氬父C璇█鐨勬枃浠惰鍐欏嚱鏁版槸鎴愬鍑虹幇鐨勶紝鍗虫湁璇诲氨鏈夊啓銆備笅闈粙缁嶅涓嬶細

10.3.1 瀛楃杈撳叆杈撳嚭鍑芥暟

1. 瀛楃杈撳嚭鍑芥暟 fputc\putc

鎶婁竴涓瓧绗﹀啓鍒扮鐩樻枃浠朵腑锛屽嚱鏁板師鍨嬩负

鍏朵腑ch鏄杈撳嚭鐨勫瓧绗︼紝瀹冨彲浠ユ槸瀛楃甯搁噺锛屼篃鍙互鏄瓧绗﹀彉閲忋俧p鏄枃浠舵寚閽堝彉閲忥紝鎸囧悜褰撳墠鎵撳紑鐨勬枃浠躲

鍑芥暟鏄皢瀛楃ch杈撳嚭鍒癴p鎵鎸囧悜鐨勬枃浠朵腑銆傚鏋滆皟鐢ㄦ垚鍔燂紝杩斿洖鍊煎氨鏄緭鍑虹殑瀛楃锛屽鏋滃け璐ヨ繑鍥炰竴涓狤OF銆

鍚屽浠洖鎯充竴涓嬶紝鎴戜滑宸茬粡瀛︿範杩囧悜缁堢杈撳嚭瀛楃鍑芥暟putchar(ch)锛岃鍑芥暟涓巉putc(ch,stdout)鍔熻兘鐩稿悓锛屼负浠涔堬紵

鍥犱负stdout鏄爣鍑嗚緭鍑鸿澶囨枃浠讹紙濡傛樉绀哄櫒锛夛紝鍓嶉潰鎴戜滑宸茬粡璇磋繃锛孋璇█灏嗘爣鍑嗚澶囦篃鐪嬫垚鏄枃浠讹紝闄ゆ涔嬪杩樻湁鏍囧噯杈撳叆璁惧鏂囦欢stdin锛堜唬琛ㄩ敭鐩橈級鍜屾爣鍑嗗嚭閿欒緭鍑簊tderr銆傝繖涓夌鏂囦欢绯荤粺鑷姩瀹氫箟锛岃嚜鍔ㄦ墦寮锛岃嚜鍔ㄥ叧闂傚疄闄呬笂stdin銆乻tdout銆乻tderr灏辨槸杩欎笁涓枃浠剁殑鎸囬拡銆

鍚戞枃浠跺啓鍏ヤ竴涓瓧绗﹀悗锛屾枃浠剁殑璇诲啓浣嶇疆鍚庣Щ涓涓瓧鑺傦紝鍥犱负鏂囦欢鎸囬拡鍦ㄨ鍐欒繃绋嬩腑鏄Щ鍔ㄧ殑锛屾墍浠ュ瓧绗︿笉浼氶噸鍙犮

2. 瀛楃杈撳叆鍑芥暟 fgetc\getc

浠庢寚瀹氱殑鏂囦欢璇诲叆涓涓瓧绗︼紝璇ユ枃浠跺繀椤绘槸浠ヨ鎴栬鍐欐柟寮忔墦寮鐨勩

鍑芥暟鍘熷瀷涓

fp鏄竴涓枃浠剁被鍨嬫寚閽堬紝瀹冩寚鍚戣璇荤殑鏂囦欢銆

濡傛灉姝e父杩斿洖锛屽垯杩斿洖璇诲彇鐨勫瓧绗︿唬鐮併傚惁鍒欒繑鍥濫OF锛涘鏋滆鍒版枃浠剁粨鏉熺锛坁Z锛夋椂锛屼篃杩斿洖EOF銆

鍑芥暟鐨勪竴鑸敤娉曪細ch=fgetc(fp);

涓婅堪璇彞鎶婅鍏ュ瓧绗︾殑ASCII鍊煎瓨鍏ュ彉閲廲h銆

鏍囧噯杈撳叆鏂囦欢鐨勫瓧绗﹁緭鍏ュ嚱鏁癵etchar()涓巉getc(stdin)鍔熻兘鐩稿悓銆

渚10.1锛氫粠閿洏涓婅緭鍏ヤ竴浜涘瓧绗︼紝閫愪釜鎶婂畠浠佸埌纾佺洏涓婂幓锛岀洿鍒拌緭鍏ヤ竴涓#鈥濅负姝€

1 #include

2 #include

3 void main()

4 {

5 FILE *fp;

6 char ch,filename[10];

7 scanf("%s",filename);

8 if((fp=fopen(filename,"w"))==NULL) /*鍒涘缓鏂囦欢鐢ㄤ簬杈撳嚭*/

9 {

10 printf("can not creat the file.\n");

11 exit(0);

12 }

13 printf("鏂囦欢鍒涘缓鎴愬姛锛佽杈撳叆瀛楃:");

14 ch=getchar();//璇ヨ鍙ョ敤鏉ユ帴鏀舵墽琛宻canf璇彞鏃舵渶鍚庤緭鍏ョ殑鍥炶溅绗

15 ch=getchar();/*杈撳叆绗竴涓瓧绗*/

16 while(ch!='#')

17 {

18 fputc(ch,fp); /*鎶婂彉閲廲h鍐欏叆鏂囦欢*/

19 putchar(ch); /*灞忓箷鏄剧ずch鐨勫*/

20 ch=getchar(); /*缁х画杈撳叆涓嬩竴涓瓧绗*/

21 }

22 printf("\n");

23 fclose(fp); /*鍏抽棴鏂囦欢*/

24 }

鍙互鐢ㄦ枃瀛楀鐞嗚蒋浠舵潵鏄剧ず鏂囦欢鍐呭銆

渚10.2 瀹炵幇涓ゆ枃鏈枃浠剁殑澶嶅埗

1 #include

2 #include

3 void main()

4 {

5 FILE *fpin,*fpout;

6 char ch,infile[10],outfile[10];

7 printf("Enter the source filename:\n");

8 scanf("%s",infile);/*杈撳叆婧愭枃浠跺悕*/

9 printf("Enter the target filename:\n");

10 scanf("%s",outfile);/*杈撳叆鐩爣鏂囦欢鍚*/

11 if((fpin=fopen(infile,"r"))==NULL) /*浠ヨ鏂瑰紡鎵撳紑婧愭枃浠*/

12 {

13 printf("can not open the source file.\n");

14 exit(0);

15 }

16 if((fpout=fopen(outfile,"w"))==NULL)/*浠ュ啓鏂瑰紡鎵撳紑鐩爣鏂囦欢*/

17 {

18 printf("can not create the target file.\n");

19 exit(0);

20 }

21 while(!feof(fpin))//feof鍑芥暟鏄娴嬫槸鍚﹀埌浜嗘枃浠跺熬銆

22 {

23 ch=fgetc(fpin);

24 fputc(ch,fpout);

25 }

26 fclose(fpin);

27 fclose(fpout);

28 }

瑕佹眰婧愭枃浠跺繀椤讳簨鍏堝瓨鍦ㄣ

10.3.2 瀛楃涓茶緭鍏/杈撳嚭鍑芥暟

1.瀛楃涓茶緭鍏ュ嚱鏁 fgets( )

fgets鐨勪綔鐢ㄦ槸浠庢寚瀹氭枃浠惰鍏ヤ竴涓瓧绗︿覆銆

鍑芥暟鍘熷瀷锛

鍙傛暟璇存槑锛

str涓鸿鍙栧埌鐨勫瓧绗︿覆鐨勫湴鍧锛屽彲浠ユ槸鎸囬拡锛屼篃鍙互鏄暟缁勶紝n涓洪檺瀹氭瘡娆¤鍙栫殑瀛楃涓暟锛宖p涓烘寚瀹氳鍙栫殑鏂囦欢鎸囬拡銆

杩斿洖鍊硷細

浠巉p鎵鎸囧悜鐨勬枃浠跺綋鍓嶈鍐欎綅缃紑濮嬶紝鏈澶氳鍏ワ紙n-1锛変釜瀛楃锛堝寘鎷崲琛岀锛夛紝鍚屾椂灏嗗瓧绗︿覆缁撴潫鏍囧織鈥榎0鈥欎篃澶嶅埗鍒板瓧绗︽暟缁剆tr涓紝姝e父杩斿洖鍊间负str鐨勯鍦板潃锛屽綋璇诲埌鏂囦欢鏈熬鎴栧嚭閿欐椂锛岃繑鍥濶ULL銆

娉ㄦ剰锛

鐢╢gets()鍑芥暟璇诲彇瀛楃涓叉椂锛岄亣鍒颁笅鍒楁儏鍐典腑浠讳綍涓绉嶏紝璇诲彇瀛楃涓插皢缁撴潫锛

宸茶鍙栦簡n-1涓瓧绗︼紱

璇诲彇鍒版崲琛岀锛

璇诲埌鏂囦欢鏈熬銆

浠庢枃浠朵腑璇诲叆涓涓瓧绗︿覆鍚庯紝璇诲啓浣嶇疆灏嗗悗绉诲埌璇ュ瓧绗︿覆鐨勪笅涓涓瓧绗﹀銆

2. 瀛楃涓茶緭鍑哄嚱鏁癴puts()

fputs鐨勪綔鐢ㄦ槸鍚戞寚瀹氭枃浠惰緭鍑轰竴涓瓧绗︿覆銆

鍑芥暟鍘熷瀷锛

鍙傛暟璇存槑锛

str涓烘寚瀹氳緭鍑虹殑瀛楃涓诧紝瀹冨彲浠ユ槸鎸囬拡銆佹暟缁勫悕鎴栧瓧绗︿覆锛宖p涓烘寚瀹氱殑杈撳嚭鏂囦欢銆

杩斿洖鍊硷細

姝e父杩斿洖鍊间负鎵杈撳嚭鐨勫瓧绗︿覆涓渶鍚庝竴涓瓧绗︾殑ASCII鍊硷紝濡傛灉鍚戞枃浠跺啓鍏ュ瓧绗︿覆涓嶆垚鍔燂紝鍒欒繑鍥炲间负EOF銆

鍦ㄤ娇鐢╢puts鍑芥暟鏃讹紝鏈変竴鐐规槸闇瑕佸姞浠ユ敞鎰忕殑锛

濡傛灉鎴戜滑鐢ㄦ爣鍑嗚緭鍑烘枃浠剁殑鏂囦欢缁撴瀯浣撴寚閽堟潵浠f浛fputs鍑芥暟涓殑fp锛屽嵆浣跨敤fputs(char *str,stdout) 鏃讹紝fputs鍑芥暟涓巔uts鍑芥暟鍔熻兘鏄湁鍖哄埆鐨勶紝涓昏琛ㄧ幇鍦╢puts(str,stdout)鑸嶅幓浜嗗瓧绗︿覆缁撴潫鏍囧織鈥榎0鈥欙紝鑰宲uts(str)鍒欏皢瀛楃涓茬粨鏉熸爣蹇椻榎0'杞崲涓哄洖杞︾杈撳嚭銆傝繖灏辫姹傛垜浠湪浣跨敤fputs鍑芥暟鏃讹紝鏂囦欢鍚戝瓧绗︿覆杈撳嚭瀹屽悗锛屽簲鍐嶅姞涓婁竴涓瓧绗︿覆缁撴潫鏍囧織锛屼竴鑸殑鏍煎紡涓猴細

fputs(str,fp);

fputc('\n',fp);

渚10.3 fgets涓巉puts鍑芥暟涓句緥銆

1 #include

2 #include

3 void disp_filec(FILE *fp);//鍑芥暟鐢虫槑

4 void disp_files(FILE *fp,int n);

5 void main()

6 {

7 FILE *fp;

8 char fname[81];

9 char s[81];

10 printf("Input file'name:");

11 scanf("%s",fname);

12 if((fp=fopen("fname","w+"))==NULL)

13 {

14 printf("can not open this file.\n");

15 }

16 while(gets(s)!=NULL)

17 {

18 fputs(s,fp);

19 fputc('\n',fp);

20 }

21 putchar('\n');

22 disp_filec(fp);

23 disp_files(fp,81);

24 fclose(fp);

25 }

26 void disp_filec(FILE *fp)

27 {

28 char ch;

29 rewind(fp);//閲嶆柊灏嗘枃浠舵寚閽堟寚鍚戞枃浠跺ご

30 while((ch=fgetc(fp))!=EOF)

31 putchar(ch);

32 }

33 void disp_files(FILE *fp,int n)

34 {

35 char str[81];

36 rewind(fp);

37 while(fgets(str,n,fp)!=NULL)

38 puts(str);

39 }

绋嬪簭杩愯缁撴灉锛

Input file'name:file3

婀栧寳鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞

鎭╂柦鑱屼笟鎶鏈闄㈣绠楁満绯籢Z

婀栧寳鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞

鎭╂柦鑱屼笟鎶鏈闄㈣绠楁満绯

婀栧寳鎭╂柦鍦熷鏃忚嫍鏃忚嚜娌诲窞

鎭╂柦鑱屼笟鎶鏈闄㈣绠楁満绯

璇锋敞鎰忚緭鍑虹殑鏍煎紡鐨勪笉鍚岋紙瀛楃涓茶緭鍑哄涓绌鸿锛夛紝鎯充竴鎯宠繖鏄负浠涔堬紵

10.3.3 鏁版嵁鍧楄緭鍏ヨ緭鍑哄嚱鏁

鏁版嵁鍧楄緭鍏ヨ緭鍑哄嚱鏁版槸浜岃繘鍒跺舰寮忚緭鍏ヨ緭鍑虹殑鍑芥暟锛屽湪杈撳叆杈撳嚭涓笉蹇呰繘琛屾暟鎹殑杞崲锛岃緭鍏ヨ緭鍑洪熷害鐩稿杈冨揩銆

1.鏁版嵁鍧楄緭鍏ュ嚱鏁癴read()

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氫粠fp鎵鎸囧畾鐨勬枃浠朵腑浠ヤ簩杩涘埗褰㈠紡璇诲彇鏁版嵁鍧椼

鍙傛暟璇存槑锛

buffer鏄寚閽堝彉閲忥紝鎸囧嚭璇诲叆鏁版嵁瀛樻斁鍖哄煙鐨勯鍦板潃锛宻ize涓轰竴娆¤鍏ョ殑瀛楄妭鏁帮紝count涓鸿鍙栨鏁帮紝fp涓鸿緭鍏ユ枃浠舵寚閽堛

杩斿洖鍊硷細姝e父杩斿洖涓篶ount鐨勫硷紙涓嶆槸瀛楄妭鏁帮級锛屽惁鍒欒繑鍥0銆

濡傛灉鏂囦欢鎸変簩杩涘埗褰㈠紡鎵撳紑锛宖read鍑芥暟鍙互璇诲彇浠讳綍绫诲瀷鐨勬暟鎹備緥濡傦細

float fx;

fread(fx,4,1,fp);

鍏朵腑fx涓哄疄鍨嬫暟鎹彉閲忥紝璇ュ嚱鏁颁粠fp鎵鎸囧畾鐨勬枃浠惰鍏ュ洓涓瓧鑺傦紝閫佸埌fx鍙橀噺涓紝骞朵笖鍙涓娆°

鎴戜滑杩樺彲浠ョ敤杩欎釜鍑芥暟璇诲彇涓涓粨鏋勪綋绫诲瀷鐨勬暟鎹

渚嬪锛

struct student

{

char No[8];

char Name[10];

int Age;

}stu[30];

缁撴瀯浣撴暟鎹湁30涓厓绱狅紝姣忎釜鍏冪礌鍗20涓瓧鑺傦紝濡傛灉瀛︾敓鏁版嵁瀛樻斁鍦ㄧ鐩樻枃浠朵腑锛屽彲浠ョ敤for璇彞渚濇璇诲彇杩30涓鐢熸暟鎹紝骞跺瓨鏀惧湪鏁扮粍stu涓

for(k=0;k<30;k++)

fread(&stu[k],sizeof(struct studen),1,fp);

鍚屽浠兂涓鎯筹紝涓轰粈涔堣鐢&stu[k]?

2.鏁版嵁鍧楄緭鍑哄嚱鏁癴write()

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氬皢buffer缂撳啿鍖轰腑鐨勬暟鎹互浜岃繘鍒剁殑褰㈠紡鍐欏叆鍒癴p鎵鎸囧畾鐨勬枃浠朵腑鍘汇

鍙傛暟璇存槑锛

buffer鏄寚閽堝彉閲忥紝鎸囧嚭璇诲叆鏁版嵁瀛樻斁鍖哄煙鐨勯鍦板潃锛宻ize涓轰竴娆¤鍏ョ殑瀛楄妭鏁帮紝count涓鸿鍙栨鏁帮紝fp涓鸿緭鍑烘枃浠舵寚閽堛

杩斿洖鍊硷細姝e父杩斿洖涓篶ount鐨勫硷紙涓嶆槸瀛楄妭鏁帮級锛屽惁鍒欒繑鍥炲间负0銆

濡傛灉鏂囦欢鎸変簩杩涘埗褰㈠紡鎵撳紑锛宖write鍑芥暟鍙互鍐欏叆浠讳綍绫诲瀷鐨勬暟鎹

渚嬪锛

struct student stu[30];

for(k=0;k<30;k++)

fwrite(&stu[k],sizeof(struct student),1,fp);

璇or璇彞灏嗘暟缁勪腑30涓厓绱犱緷娆″啓鍏p鎵鎸囧畾鐨勬枃浠朵腑锛屽苟涓斿彧鍐欎竴娆°

渚10.4 浠庨敭鐩樹笂杈撳叆3涓鐢熶俊鎭紝鐒跺悗灏嗗畠浠浆瀛樺埌纾佺洏鏂囦欢涓紝骞舵樉绀鸿繖浜涗俊鎭

1 #include

2 #include

3 struct student

4 {

5 char No ;

6 char Name[10];

7 int Age;

8 };

9 void main()

10 {

11 struct student stu ,stud ;

12 FILE *fp;

13 int i;

14 if((fp=fopen("bina ","wb+"))==NULL)

15 {

16 printf("can not open this file.\n");

17 exit(0);

18 }

19 printf("Input:\n");

20 for(i=0;i<3;i++)//杈撳叆瀛︾敓淇℃伅

21 scanf("%s%s%d",stu[i].No,stu[i].Name,&stu[i].Age);

22 for(i=0;i<3;i++)//淇濆瓨瀛︾敓淇℃伅

23 fwrite(&stu[i],sizeof(struct student),1,fp);

24 rewind(fp);

25 printf("\n");

26 printf("Output:\n");

27 for(i=0;i<3;i++)

28 {

29 fread(&stud[i],sizeof(struct student),1,fp);

30 printf("%7s%10s%5d\n",stud[i].No,stud[i].Name,stud[i].Age);

31 }

32 fclose(fp);

33 }

璇峰悓瀛︿滑杩愯璇ョ▼搴忓悗锛屽啀鐢ㄥ瓧澶勭悊杞欢鎵撳紑bina鏂囦欢锛岃兘鍍忔枃鏈枃浠跺摢鏍锋甯告樉绀哄悧锛熶负浠涔堬紵

10.3.4 鏍煎紡鍖栬緭鍏ヨ緭鍑哄嚱鏁

浠ュ墠鎴戜滑瀛︿範鐨勬牸寮忓寲杈撳叆杈撳嚭鏄拡瀵圭粓绔殑锛屽嵆scanf锛堬級鍑芥暟鍙拡瀵归敭鐩橈紝鑰宲rintf锛堬級鍑芥暟鍙拡瀵规樉绀哄櫒鐨勶紝濡傛灉杈撳叆杈撳嚭瀵硅薄鏄鐩樻枃浠讹紝鍙互閲囩敤fscanf锛堬級鍑芥暟鍜宖printf锛堬級鍑芥暟銆

1.鏍煎紡鍖栬緭鍏ュ嚱鏁帮紙fscanf鍑芥暟锛

鍑芥暟鍘熷舰锛

鍑芥暟鍔熻兘锛氭寜鐓р滆緭鍏ユ牸寮忓瓧绗︹濇墍鎸囧畾鐨勮緭鍏ユ牸寮忥紝浠巉p鎸囧畾鏂囦欢鐨勫綋鍓嶈浣嶇疆寮濮嬭鍏ユ暟鎹紝鐒跺悗鎶婂畠浠寜杈撳叆椤瑰湴鍧琛ㄥ垪鐨勯『搴忓瓨鍏ユ寚瀹氱殑瀛樺偍鍗曞厓涓

鍙傛暟璇存槑锛歠p涓烘寚瀹氱殑杈撳叆鏂囦欢锛涒滆緭鍏ユ牸寮忓瓧绗︿覆鈥濅笌scanf鍑芥暟涓殑杈撳叆鏍煎紡瀛楃涓茬浉鍚岋紝杈撳叆椤瑰湴鍧琛ㄥ垪涓轰粠鎸囧畾鏂囦欢涓鍏ユ暟鎹殑瀛樻斁鍦板潃锛屽鏋滄湁澶氫釜杈撳叆椤癸紝杈撳叆椤逛箣闂寸敤閫楀彿闅斿紑銆

杩斿洖鍊硷細濡傛灉鎿嶄綔鎴愬姛锛岃繑鍥炲间负涓闈為浂鍊硷紝鍗宠緭鍏ョ殑鏁版嵁鐨勪釜鏁帮紝濡傛灉闈炴甯革紝杩斿洖闆跺硷紝濡傛灉璇诲埌鏂囦欢灏撅紝杩斿洖EOF銆

杈撳叆鏁版嵁鍚庯紝fp鎸囬拡璇诲啓浣嶇疆灏嗙Щ鍔ㄥ埌杈撳叆鏁版嵁涔嬪悗銆

2.鏍煎紡鍖栬緭鍑哄嚱鏁帮紙fprintf鍑芥暟锛

鍑芥暟鍘熷舰锛

鍑芥暟鍔熻兘锛氭妸杈撳嚭椤硅〃鍒椾腑鐨勬暟鎹寜鐓ф寚瀹氱殑鏍煎紡杈撳嚭鍒癴p鎵鎸囧畾鐨勬枃浠朵腑鍘汇

鍙傛暟璇存槑锛歠p鏄枃浠舵寚閽堬紝瀹冩寚鍚戣緭鍑烘枃浠讹紝鈥滆緭鍑烘牸寮忓瓧绗︿覆鈥濅负缁欏畾鐨勮緭鍑烘牸寮忥紝涓巔rintf锛堬級鍑芥暟鐨勮緭鍑烘牸寮忓瓧绗︿覆鐩稿悓銆傝緭鍑洪」琛ㄥ垪涓鸿緭鍑哄璞★紝濡傛灉鏈夊涓緭鍑洪」锛岃緭鍑洪」涔嬮棿鐢ㄩ楀彿闅斿紑銆

杩斿洖鍊硷細濡傛灉姝e父璋冪敤锛岃繑鍥炲间负涓闈為浂鍊硷紝鍚﹀垯涓篍OF鍊笺

鍚戞枃浠惰緭鍑烘暟鎹悗锛屾枃浠剁殑璇诲啓浣嶇疆灏嗙Щ鍔ㄥ埌鎵鍐欏叆鐨勬暟鎹箣鍚庛

娉ㄦ剰锛

鏃犺fscanf鍑芥暟锛岃繕鏄痜printf鍑芥暟鏍煎紡涓庡姛鑳介兘鍜屽搴旂殑scanf鍑芥暟鍜宲rintf鍑芥暟鍩烘湰鐩稿悓锛屼笉鍚屼箣澶勫湪浜庤緭鍏ユ垨杈撳嚭鐨勬柟鍚戜笉鍚屻俿canf鍑芥暟鏄敱鏍囧噯杈撳叆璁惧鏂囦欢杈撳叆锛堥敭鐩橈級锛宲rintf鍑芥暟鏄悜鏍囧噯杈撳嚭璁惧鏂囦欢杈撳嚭锛堟樉绀哄櫒锛夛紝濡傛灉鎴戜滑灏唂p鎹㈡垚瀵瑰簲鐨剆tdin锛堟爣鍑嗚緭鍏ヨ澶囨枃浠讹級鍜宻tdout锛堟爣鍑嗚緭鍑鸿澶囨枃浠讹級锛宖scanf鍑芥暟鍜宖printf鍑芥暟涓巗canf鍑芥暟鍜宲rintf鍑芥暟鐨勫姛鑳藉畬鍏ㄧ浉鍚屻

濡傦細

涓嬮潰涓句竴涓鏄庢牸寮忓寲鏂囦欢璇诲啓鐨勪緥瀛愩

渚10.5 鐜拌瀛︾敓淇℃伅鍖呮嫭瀛﹀彿銆佷笁闂ㄨ鐨勫崟绉戞垚缁╁拰骞冲潎鍒嗭紝鍒涘缓涓涓悕涓簊core.txt鐨勬枃鏈枃浠讹紝浠庨敭鐩樿緭鍏ユ暟鎹紝褰撳鍙蜂负0鏃堕鍑鸿緭鍏ワ紝鍐欐牸寮忓寲鏁版嵁鍒扮鐩樻枃浠讹紝鐒跺悗鏄剧ず璇ユ牸寮忓寲鏂囦欢鏁版嵁鍒板睆骞曚笂銆

1 #include

2 #include

3 struct student

4 {

5 char no;

6 int sco ;

7 float ave;

8 };

9 void main()

10 {

11 FILE *fp;

12 int i;

13 struct student a;

14 if((fp=fopen("score.txt","w"))==NULL)

15 {

16 printf("can not open the file.\n");

17 exit(0);

18 }

19 printf("Input no:");

20 scanf("%s",a.no);

21 getchar();

22 while(atoi(a.no)!=0)//atoi()灏嗗瓧绗︿覆杞彉鎴愭暣鍨嬫暟鎹

23 {

24 printf("Input 3 scores:");

25 for(i=0;i<3;i++)

26 {

27 scanf("%d",&a.sco[i]);

28 getchar();

29 }

30 a.ave=(a.sco[0]+a.sco +a.sco )/3.0;

31 fprintf(fp,"%5s",a.no);

32 for(i=0;i<3;i++)

33 fprintf(fp,"%4d",a.sco[i]);

34 fprintf(fp,"%6.2f",a.ave);

35 printf("Input no:");

36 scanf("%s",a.no);

37 getchar();

38 }

39 fclose(fp);

40 if((fp=fopen("score.txt","r"))==NULL)

41 {

42 printf("can not open the file.\n");

43 exit(0);

44 }

45 while(fscanf(fp,"%s%d%d%d%f",a.no,&a.sco[0],&a.sco ,

&a.sco ,&a.ave)!=EOF)

46 printf("%5s%4d%4d%4d%6.2f\n",a.no,a.sco[0],

a.sco ,a.sco ,a.ave);

47 fclose(fp);

48 }

绋嬪簭瀹屾垚鍚庝篃鍙互鐢ㄥ啓瀛楁澘鏌ョ湅鏂囦欢鍐呭銆

10.4 鏂囦欢鐨勫畾浣

鍓嶉潰浠嬬粛鐨勬枃浠惰鍐欐柟寮忛兘鏄『搴忚鍐欙紝浠庢枃浠剁殑寮澶撮『搴忚鍐欐瘡涓涓暟鎹傚疄闄呬笂鍦ㄤ竴涓枃浠剁殑鏂囦欢缁撴瀯浣撲腑锛岄兘鏈変竴涓寚鍚戝綋鍓嶈鍐欎綅缃殑鎸囬拡锛屽湪浠ヨ锛堟垨鍐欙級鏂瑰紡鎵撳紑鏂囦欢鏃讹紝璇ユ寚閽堟寚鍚戞枃浠剁殑寮澶达紝濡傛灉浠ヨ拷鍔犵殑鏂瑰紡鎵撳紑鏂囦欢锛屽垯璇ユ枃浠舵寚閽堟寚鍚戞枃浠剁殑鏈熬銆傚湪椤哄簭璇诲啓涓涓枃浠舵椂锛屾瘡娆¤鍐欓兘瑕佷慨鏀规枃浠舵寚閽堢殑鎸囧悜锛屼娇瀹冩寚鍚戜笅涓娆¤璇诲啓鐨勪綅缃

鎴戜滑涔熷彲浠ヤ汉涓虹殑鎺у埗褰撳墠鏂囦欢鎸囬拡鐨勭Щ鍔紝鍙互璁╂枃浠舵寚閽堥殢鎰忔寚鍚戞垜浠兂瑕佹寚鍚戠殑浣嶇疆锛岃屼笉鏄儚浠ュ線閭f牱鎸夌墿鐞嗛『搴忛愪釜绉诲姩锛岃繖灏辨槸鎵璋撳鏂囦欢鐨勫畾浣嶄笌闅忔満璇诲啓銆

10.4.1 鎸囬拡鎸囧悜鏂囦欢寮澶寸殑鍑芥暟锛坮ewind()鍑芥暟锛

鎴戜滑鐭ラ亾鎵撳紑鏂囦欢鏃跺彲浠ラ氳繃璇讳笌鍐欐柟寮忓皢鏂囦欢鐨勬寚閽堟寚鍚戞枃浠跺紑澶达紝rewind鍑芥暟鍙互鍦ㄦ枃浠惰繍琛岀殑杩囩▼涓皢鏂囦欢鎸囬拡閲嶆柊绉诲姩鍒版枃浠跺紑澶寸殑浣嶇疆銆

鍑芥暟鍘熷舰锛

鍑芥暟鍔熻兘锛氳鍑芥暟浣挎枃浠剁殑璇诲啓浣嶇疆鎸囬拡閲嶆柊鎸囧悜鏂囦欢鐨勫紑澶淬

鍙傛暟璇存槑锛歠p涓烘枃浠舵寚閽堛

杩斿洖鍊硷細璇ュ嚱鏁版病鏈夎繑鍥炲笺

渚 10.6 rewind锛堬級鍑芥暟浣跨敤涓句緥

1 #include

2 #include

3 void main()

4 {

5 FILE *fp1,*fp2;

6 char ch;

7 if((fp1=fopen("file1.txt","r"))==NULL)

8 {

9 printf("can not open the file.\n");

10 exit(0);

11 }

12 if((fp2=fopen("file2.txt","w"))==NULL)

13 {

14 printf("can not open the file.\n");

15 exit(0);

16 }

17 while(!feof(fp1))

18 {

19 ch=getc(fp1);

20 putc(ch,fp2);

21 }

22 rewind(fp1);

23 while(!feof(fp1))

24 {

25 ch=getc(fp1);

26 putchar(ch);

27 }

28 fclose(fp1);

29 fclose(fp2);

30 }

鍜屽墠闈竴鏍疯绋嬪簭杩愮畻鍓嶅湪褰撳墠鐩綍涓嬪繀椤昏鏈塮ile1.txt鏂囦欢锛岄氳繃绋嬪簭鐨勮繍绠楀皢file1.txt鏂囦欢鎷疯礉鍒癴ile2.txt鏂囦欢涓紝骞朵笖鍦ㄥ睆骞曚笂杈撳嚭file1.txt鏂囦欢鍐呭銆

10.4.2 璁剧疆鏂囦欢鎸囬拡浣嶇疆鍑芥暟锛坒seek()鍑芥暟锛

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氭妸fp鎵鎸囧畾鏂囦欢鐨勮鍐欎綅缃寚閽堣缃埌鐩稿fromwhere浣嶇Щ閲忎负offset鐨勫湴鏂广

鍙傛暟璇存槑锛歠p涓烘枃浠舵寚閽堬紝offset涓虹浉瀵逛綅绉婚噺锛堝嵆鐩稿浜巉romwhere鐨勪綅绉婚噺锛夛紝鍙互涓烘鏁颁篃鍙互涓鸿礋鏁帮紝濡傛灉涓烘鏁帮紝鎸囬拡鍚戝湴鍧楂樼殑鏂瑰悜绉诲姩锛屽鏋滀负璐熸暟锛屾寚閽堝悜鍦板潃浣庣殑鏂瑰悜绉诲姩锛宖romwhere鏄浉瀵逛綅绉荤殑鍩虹偣锛屽繀椤绘槸0锛1锛2涓殑涓涓紝鍒嗗埆浠h〃浠ヤ笅涓変釜绗﹀彿甯搁噺锛

fromwhere 鍛藉悕 鍚箟

0 SEEK_SET 鏂囦欢寮濮

1 SEEK_CUR 褰撳墠鏂囦欢鎸囬拡浣嶇疆

2 SEEK_END 鏂囦欢鏈熬

杩斿洖鍊硷細濡傛灉鎸囬拡鎴愬姛鍦扮Щ鍔ㄤ簡锛岃繑鍥炲间负闆讹紝鍚﹀垯杩斿洖涓涓潪闆跺艰〃绀哄け璐ャ

璇风湅涓嬮潰渚嬪瓙锛

fseek(fp,5L,SEEK_SET);

灏嗘枃浠舵寚閽堢Щ鍔ㄥ埌绂绘枃浠跺ご5涓瓧鑺傜殑浣嶇疆銆

fseek(fp,20L,1);灏嗕綅缃寚閽堢Щ鍒扮褰撳墠浣嶇疆20涓瓧鑺傜殑浣嶇疆锛堝悜鍦板潃楂樼殑鏂瑰悜绉诲姩锛夈

fseek(fp,-20L,1);灏嗕綅缃寚閽堢Щ鍒扮褰撳墠浣嶇疆20涓瓧鑺傜殑浣嶇疆锛堝悜鍦板潃浣庣殑鏂瑰悜绉诲姩锛夈

fseek(fp,-30L,2);灏嗕綅缃寚閽堢Щ鍒拌窛绂绘枃浠舵湯灏30涓瓧鑺傜殑浣嶇疆銆

浠庝笂闈㈢殑渚嬪瓙鍙互鐪嬪嚭锛

锛1锛変娇鐢⊿EEK_SET銆丼EEK_CUR銆丼EEK_END涓庝娇鐢0銆1銆2鏄瓑浠风殑銆

锛2锛夊鏋滀娇鐢⊿EEK_SET锛屾枃浠舵寚閽堝彧鑳藉悜鍦板潃楂樼殑鏂瑰悜绉诲姩锛屽嵆offset鍙兘浣跨敤姝f暟锛屽鏋滅敤SEEK_CUR鏂囦欢鎸囬拡鍗冲彲浠ュ悜鍦板潃楂樼殑鏂瑰悜绉诲姩涔熻兘鍚戝湴鍧浣庣殑鏂瑰悜绉诲姩锛宱ffset鍗宠兘鐢ㄦ鏁帮紝涔熻兘鐢ㄨ礋鏁帮紝濡傛灉浣跨敤SEEK_END鏂囦欢鎸囬拡鍙兘鍚戝湴鍧浣庣殑鏂瑰悜绉诲姩锛屽嵆offset鍙兘鐢ㄨ礋鏁般

渚 10.7 鍦ㄧ鐩樻枃浠朵笂瀛樻湁10涓鐢熺殑鏁版嵁锛岃姹傚皢绗1锛3锛5锛7锛9涓鐢熸暟鎹緭鍏ヨ绠楁満锛屽苟鍦ㄥ睆骞曚笂鏄剧ず鍑烘潵銆

1 #include

2 #include

3 #define SIZE 10

4 struct student

5 {

6 char name[10];

7 int num;

8 int age;

9 char sex ;

10 }stud[SIZE];

11 void save()

12 {

13 int i;

14 FILE *fp;

15 if((fp=fopen("stud_dat","wb"))==NULL)

16 {

17 printf("can not open file\n");

18 exit(0);

19 }

20 for(i=0;i

21 if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)

22 printf("file write error\n");

23 fclose(fp);

24 }

25 void print()

26 {

27 int i;

28 FILE *fp;

29 if((fp=fopen("stud_dat","rb"))==NULL)

30 {

31 printf("can not open file\n");

32 exit(0);

33 }

34 for(i=0;i

35 {

36 fseek(fp,i*sizeof(struct student),0);

37 fread(&stud[i],sizeof(struct student),1,fp);

38 printf("%s %d %d %s\n",stud[i].name,stud[i].num,

stud[i].age,stud[i].sex);

39 }

40 fclose(fp);

41 }

42 void main()

43 {

44 int i;

45 printf("璇疯緭鍏ュ鐢熺殑濮撳悕銆佸鍙枫佸勾榫勩佹у埆\n");

46 for(i=0;i

47 scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,

stud[i].sex);

48 save();

49 print();

50 }

10.4.3 鑾峰緱鏂囦欢褰撳墠璇诲啓浣嶇疆鍑芥暟锛坒tell()鍑芥暟锛

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氳鍑芥暟鐢ㄤ簬鍙栧緱娴佸紡鏂囦欢褰撳墠鐨勮鍐欎綅缃紝瀹冩槸鐢ㄧ浉瀵逛簬鏂囦欢寮澶翠綅绉婚噺鏉ヨ〃绀鸿浣嶇疆鐨勩

鍙傛暟璇存槑锛歠p涓烘枃浠舵寚閽堛

杩斿洖鍊硷細濡傛灉姝e父锛岃繑鍥炲间负浣嶇Щ閲忥紝鍚﹀垯杩斿洖鍊间负-1.

渚嬪锛

if(ftell(fp)==-1)

printf("\a Error!\n");

瀛楃鈥榎a'涓鸿浆涔夊瓧绗︼紝鍦ㄨ繖閲岃〃绀鸿绠楁満鎵0鍣ㄥ搷閾冧竴娆★紝浠ョず鎶ヨ銆

10.5 鏂囦欢鐘舵佹娴

鍦ㄨ繘琛屾枃浠惰鍐欐椂锛岀▼搴忓憳瀵规枃浠剁姸鎬佽鍋氬埌蹇冧腑鏈夋暟锛岃繖鏍锋墠鑳藉鏂囦欢杩涜姝g‘璇诲啓銆侰璇█鎻愪緵浜嗕竴浜涘嚱鏁版潵妫娴嬫枃浠剁殑鐘舵佸拰杩涜鏂囦欢鍑洪敊鎻愮ず锛屼互甯姪绋嬪簭鍛樹簡瑙f枃浠惰鍐欐儏鍐点備笅闈㈠杩欎簺鍑芥暟浠嬬粛濡備笅銆

10.5.1 鏂囦欢璇诲啓缁撴潫鏍囧織鍑芥暟锛坒eof()鍑芥暟锛

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氱敤鏉ユ鏌ユ枃浠惰鍐欐槸鍚︾粨鏉熴

鍙傛暟璇存槑锛歠p鏄枃浠舵寚閽堛

杩斿洖鍊硷細濡傛灉鏂囦欢姝e父缁撴潫锛岃繑鍥炲间负1锛屽鏋滄枃浠舵病鏈夌粨鏉熻繑鍥炲间负0銆

渚 10.8 閫氳繃鍛戒护琛屾潵浼犻掓枃浠跺悕锛屾渶缁堝畬鎴愪袱涓枃浠剁殑澶嶅埗銆

1 #include

2 #include

3 #define SIZE 10

4 struct student

5 {

6 char name[10];

7 int num;

8 int age;

9 char sex ;

10 }stud[SIZE];

11 void main(int argc,char *argv[])

12 {

13 FILE *fp1,*fp2;

14 int i=0;

15 if(argc!=3)

16 {

17 printf("Error in command!\n");

18 exit(0);

19 }

20 if((fp1=fopen(argv ,"rb"))==NULL)

21 {

22 printf("can not this file\n");

23 exit(0);

24 }

25 if((fp2=fopen(argv ,"wb"))==NULL)

26 {

27 printf("can not this file\n");

28 exit(0);

29 }

30 while(!feof(fp1))

31 {

32 fread(&stud[i],sizeof(struct student),1,fp1);

33 fwrite(&stud[i],sizeof(struct student),1,fp2);

34 i++;

35 }

36 fclose(fp1);

37 fclose(fp2);

38 }

10.5.2 妫鏌ユ枃浠跺嚭閿欏嚱鏁帮紙ferror()鍑芥暟锛

鍑芥暟鍘熷瀷锛

鍑芥暟鍔熻兘锛氬湪璋冪敤鍚勭杈撳叆杈撳嚭鍑芥暟鏃讹紝鍙敤璇ュ嚱鏁版鏌ユ槸鍚﹀嚭閿欍

鍙傛暟璇存槑锛歠p涓烘枃浠舵寚閽堛

杩斿洖鍊硷細濡傛灉鏂囦欢璋冪敤娌℃湁鍑洪敊锛岃繑鍥炲间负0锛屽惁鍒欒繑鍥炲间负闈0鍊笺

鐢变簬璇ュ嚱鏁版槸鐢ㄦ潵妫鏌ヨ緭鍏ヨ緭鍑哄嚱鏁扮殑姣忔璋冪敤鏄惁鍑洪敊锛屽洜姝ゅ簲璇ュ湪璋冪敤杈撳叆杈撳嚭鍑芥暟鍚庣珛鍗宠皟鐢ㄦ鍑芥暟锛屼互妫鏌ヨ緭鍏ヨ緭鍑哄嚱鏁扮殑寮曠敤鏄惁姝g‘銆

渚嬪锛

ch=fgetc(fp);

if(ferror(fp))printf("Erroe in I/O.\n");

瀹炶鍗佷簩 鏂囦欢

1.瀹炶棰

缂栧啓涓C绋嬪簭锛屽畬鎴愪互涓嬫搷浣滐細

鈶 瀹氫箟濡備笅缁撴瀯浣撶被鍨

struct strdent

{

char num[8];

char name[16];

char swx;

int age;

double grade[9];

};

鈶 涓轰笅琛ㄥ畾涔変竴涓粨鏋勪綋鏁扮粍锛屽苟杩涜鍒濆鍖栥

瀛﹀彿锛坣um锛

濮撳悕(name)

鎬у埆(sex)

骞撮緞(age)

鎴愮哗(geade)

98160101

Zhang jianguo

M

19

95.5

98160102

Liu xiaodi

W

18

85.6

98160105

Gao fongwen

M

21

91.0

98160106

Xu jingfang

W

20

91.5

98160110

Ling haixia

W

21

84.2

98160116

Zhao xiaolian

M

19

84.5

鈶 鎵撳紑鍙鍐欑殑鏂版枃浠秙tudent.dat銆

鈶 浣跨敤鍑芥暟fwrite()灏嗙粨鏋勪綋鏁扮粍鐨勫唴瀹瑰啓鍏ユ枃浠秙tudent.dat涓

鈶 鍏抽棴鏂囦欢student.dat銆

2.瀹炶瑕佹眰

鈶 鎺屾彙鏂囦欢銆佺紦鍐叉枃浠剁郴缁熴佹枃浠舵寚閽堢殑姒傚康銆

鈶 瀛︿細浣跨敤鏂囦欢鎵撳紑銆佸叧闂佽銆佸啓绛夋枃浠舵搷浣滃嚱鏁般

鈶 浜嗚В鐢ㄧ紦鍐叉枃浠剁郴缁熷鏂囦欢杩涜鎿嶄綔銆

鈶 杩涗竴姝ョ悊瑙e嚱鏁般佹寚閽堛佺粨鏋勪綋鐨勬蹇靛拰浣跨敤銆

涔犻鍗

10.1濉┖棰

锛1锛夊湪C璇█涓紝鏂囦欢鍙互鐢 鏂瑰紡瀛樺彇锛屼篃鍙互鐢 瀛樺彇銆

锛2锛夋墦寮鏂囦欢鐨勫惈涔夋槸 锛屽叧闂枃浠剁殑鍚箟鏄 銆

锛3锛夋枃鏈枃浠跺湪鍐呭瓨涓互 鏂瑰紡瀛樺偍锛屼簩杩涘埗鏂囦欢鍦ㄥ唴瀛樹腑浠 銆

锛4锛塮open()鍑芥暟鏈変袱涓舰寮忓弬鏁帮紝涓涓〃绀 锛屽彟涓涓〃绀 銆

锛5锛塃OF鍙互鐢ㄦ潵鍒ゆ柇鏂囨湰鏂囦欢鏄惁缁撴潫锛屽鏋滈亣鍒版枃浠剁粨鏉燂紝EOF鍊间负 锛屽惁鍒欎负 銆

锛6锛塮eof(fp)鍑芥暟鐢ㄦ潵鍒ゆ柇鏂囦欢鏄惁缁撴潫锛屽鏋滈亣鍒版枃浠剁粨鏉燂紝鍑芥暟鍊间负 锛屽惁鍒欎负 銆

锛7锛変笅闈㈢▼搴忕敱缁堢閿洏杈撳叆瀛楃锛屽瓨鏀惧埌鏂囦欢涓紝鐢紒缁撴潫杈撳叆銆傝鍦 澶勫~鍏ラ傚綋鍐呭銆

#include

#include

main()

{

FILE *fp;

char ch,fname[10];

printf(鈥淚nput name of file\n鈥);

gets(fname);

if((fp==fopen(fname,鈥渨鈥))==NULL)

{

printf(鈥渃annot open\n鈥);

exit(0);

}

printf(鈥淓nter data:\n鈥);

while( !=鈥!鈥)

fputc( );

fclose(fp);

}

锛8锛変笅闈㈢▼搴忎粠涓涓簩杩涘埗鏂囦欢涓鍏ョ粨鏋勪綋鏁版嵁锛屽苟鎶婄粨鏋勪綋鏁版嵁鏄剧ず鍦ㄧ粓绔睆骞曚笂銆傝鍦 澶勫~鍏ラ傚綋鍐呭銆

#include

struct rec

{

int num;

float total;

};

main()

{

FILE *f;

f=fopen(鈥渂in.dat鈥,鈥渞b鈥)锛

reout(f);

fclose(f);

}

reout( )

{

struct rec r;

while(!feof(f))

{

fread(&r, ,1,f);

printf(鈥%d,%f\n鈥, );

}

}

10.2閫夋嫨棰

锛1锛夌郴缁熺殑鏍囧噯杈撳叆鏂囦欢鏄 銆

A.閿洏 B.鏄剧ず鍣 C.杞洏 D.纭洏

锛2锛変互涓嬪彲浣滀负鍑芥暟fopen涓涓涓弬鏁扮殑姝g‘鏍煎紡鏄 銆

A.c:user\text.txt B.c:\user\text.txt

C.鈥渃:\user\text.txt鈥 D.鈥渃:\\user\\text.txt鈥

锛3锛夎嫢瑕佺敤fopen鍑芥暟鎵撳紑涓涓柊鐨勪簩杩涘埗鏂囦欢锛岃鏂囦欢瑕佹棦鑳借涔熻兘鍐欙紝鍒欐枃浠舵墦寮鏂瑰紡瀛楃涓插簲鏄 銆

A.鈥渁b+鈥 B.鈥渨b+鈥 C.鈥渞b+鈥 D.鈥渁b鈥

锛4锛塮getc鍑芥暟鐨勪綔鐢ㄦ槸浠庢寚瀹氱殑鏂囦欢璇诲叆涓涓瓧绗︼紝璇ユ枃浠剁殑鎵撳紑鏂瑰紡蹇呴』鏄 銆

A.鍙啓 B.杩藉姞 C.璇绘垨璇诲啓 D.绛旀B鍜岀瓟妗圕閮芥纭

锛5锛塮p鏄寚鍚戞煇鏂囦欢鐨勬寚閽堬紝涓斿凡璇诲埌鏂囦欢鐨勬湯灏撅紝鍒欒〃杈惧紡feof(fp)姝g‘鐨勮繑鍥炲兼槸 銆

A.NULL B.0 C.闈為浂鍊 D.EOF

锛6锛塮scanf()鍑芥暟鐨勬纭皟鐢ㄥ舰寮忔槸 銆

A. fscanf(鏍煎紡瀛楃涓诧紝杈撳嚭琛ㄥ垪锛宖p)锛

B. fscanf(fp,鏍煎紡瀛楃涓诧紝杈撳嚭琛ㄥ垪)锛

C. fscanf(鏍煎紡瀛楃涓诧紝鏂囦欢鎸囬拡锛岃緭鍑鸿〃鍒)锛

D. fscanf(鏂囦欢鎸囬拡锛屾牸寮忓瓧绗︿覆锛岃緭鍑鸿〃鍒)锛

10.3浠庨敭鐩樹笂杈撳叆10涓暣鏁帮紝鍒嗗埆浠ユ枃鏈枃浠跺拰浜岃繘鍒舵枃浠舵柟寮忓瓨鍏ョ鐩樸

10.4缂栫▼瀹炵幇涓涓枃鏈枃浠剁殑澶嶅埗銆

10.5鏈3涓鐢燂紝姣忎釜瀛︾敓鏈3闂ㄨ鐨勬垚缁╋紝浠庨敭鐩樹笂鍒嗗埆杈撳叆姣忎釜瀛︾敓鐨勫鍙枫佸鍚嶃佸拰3闂ㄨ鐨勬垚缁╋紝淇濆瓨鍒颁竴涓悕涓篶lass31.dat鐨勬枃鏈枃浠朵腑鍘汇

10.6鏈3涓鐢燂紝姣忎釜瀛︾敓鏈3闂ㄨ鐨勬垚缁╋紝浠庨敭鐩樹笂鍒嗗埆杈撳叆姣忎釜瀛︾敓鐨勫鍙枫佸鍚嶃佸拰3闂ㄨ鐨勬垚缁╋紝淇濆瓨鍒颁竴涓悕涓篶lass32.dat鐨勪簩杩涘埗鏂囦欢涓幓銆

10.7鎵撳紑涔犻10.6涓缓绔嬬殑浜岃繘鍒舵枃浠讹紝鎸夆滃鍙枫佸鍚嶃佹垚缁1銆佹垚缁2銆佹垚缁3銆佸钩鍧囨垚缁┾濈殑鏍煎紡鎶婃枃浠朵腑鐨勮褰曞叏閮ㄦ樉绀哄嚭鏉ワ紝骞朵笖瑕佹眰鎶婂鐢熺殑鎬讳汉鏁板湪灞忓箷涓婃樉绀哄嚭鏉ャ

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆