绗崄绔 鏂囦欢
鍙戝竷: 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銆佸钩鍧囨垚缁┾濈殑鏍煎紡鎶婃枃浠朵腑鐨勮褰曞叏閮ㄦ樉绀哄嚭鏉ワ紝骞朵笖瑕佹眰鎶婂鐢熺殑鎬讳汉鏁板湪灞忓箷涓婃樉绀哄嚭鏉ャ






发表于 2009-1-5 19:48
| 











