[Powered by Google Translate] [கோப்பு I / O]
[ஜேசன் ஹிர்ஸ்கோஹார்ன், ஹார்வர்ட் பல்கலைக்கழகம்]
[இது, CS50.TV CS50 உள்ளது]
நாம் ஒரு கோப்பு நினைக்கும் போது, என்ன, ஒரு மைக்ரோசாப்ட் வேர்ட் ஆவணம் மனதில்
ஒரு படம், அல்லது ஒரு எம்பி 3 பாடல்,
நாம் வெவ்வேறு வழிகளில் கோப்புகளை இந்த வகையான ஒவ்வொரு தொடர்பு.
உதாரணமாக, ஒரு வார்த்தை ஆவணத்தில் நாம் உரை சேர்க்கவும்
ஒரு படம் நாம் முனைகளை அவுட் நறுக்க அல்லது வண்ணங்கள் retouch இருக்கும் போது.
இன்னும் முக்காடிட்டு நம் கணினியில் உள்ள கோப்புகளை இன்னும் எதுவும் இல்லை
பூஜ்ஜியங்களும் ஒன்றுகளும் ஒரு நீண்ட வரிசையை விட.
இது கோப்பு ஊடாடுவதாக குறிப்பிட்ட பயன்பாடு வரை தான்
இந்த நீண்ட வரிசையை செயல்படுத்த மற்றும் பயனர் கொடுக்க வேண்டிய எப்படி தீர்மானிக்க.
ஒரு புறம், ஒரு ஆவணம், ஒரு பைட் பார்த்து இருக்கலாம்
அல்லது 8 பூஜ்ஜியங்களும் ஒன்றுகளும், மற்றும் திரையில் ஒரு ASCII எழுத்துகளின் காட்ட.
மறுபுறம், ஒரு பிட்மாப் படம், 3 பைட்டுகள் பார்த்து இருக்கலாம்
அல்லது 24 பூஜ்ஜியங்களும் ஒன்றுகளும்,
மற்றும் 3 அறுபதின்ம எண்கள் அவற்றை விளக்குவது
அந்த சிவப்பு, பச்சை, மற்றும் நீலம் மதிப்புகள் பிரதிநிதித்துவம்
ஒரு படத்தை ஒரு பிக்சல் உள்ள.
அதை அவர்கள், தங்கள் அடிப்படை நேரத்தில், உங்கள் திரையில் போல் இருக்கும்
கோப்புகளை பூஜ்ஜியங்களும் ஒன்றுகளும் வரிசை விட எதுவும் இல்லை.
எனவே நாம் இந்த ஆழத்திற்கு நாம் உண்மையில் இந்த பூஜ்ஜியங்களும் ஒன்றுகளும் கையாள எப்படி இருக்கும்
அதை எழுதும் ஒரு கோப்பை படித்து வரும் போது.
>> நான் ஒரு சாதாரண 3 பகுதி செயல்முறை அதை உடைக்கும் மூலம் தொடங்க வேண்டும்.
அடுத்து, நான் இந்த மூன்று பாகங்கள் நிரூபிக்க இரண்டு குறியீடு எடுத்துக்காட்டுகள் கொண்டு டைவ் வேண்டும்.
இறுதியாக, நான் செயல்முறை ஆய்வு மற்றும் அதன் முக்கிய விவரங்கள் சில வேண்டும்.
உங்கள் டெஸ்க்டாப் உட்கார்ந்து எந்த கோப்பு,
செய்ய முதல் விஷயம் திறக்க உள்ளது.
சி நாம் ஒரு முன் struct ஒரு சுட்டிக்காட்டி அறிவித்தார் செய்ய
அந்த வட்டில் ஒரு கோப்பை குறிக்கிறது.
இந்த செயல்பாடு அழைப்பில், நாமும் எழுத அல்லது கோப்பை படிக்க வேண்டும் என்பதை தீர்மானிக்க.
அடுத்து, நாங்கள் உண்மையான வாசிப்பு மற்றும் எழுத்து செய்வது.
நாம் இந்த பகுதியில் பயன்படுத்தலாம் சிறப்பு செயல்பாடுகள் பல உள்ளன
கிட்டத்தட்ட அனைத்து கோப்பு என்பதை குறிக்கும் கடிதம் எஃப், தொடங்கும்.
கடந்த, கோப்புகள் மேல் மூலையில் உள்ள சிறிய சிவப்பு நிறத்தில் உள்ள X ஒத்த, உங்கள் கணினியில் திறக்க
நாம் ஒரு இறுதி செயல்பாட்டு அழைப்பு கோப்பு மூட.
இப்போது நாம் செய்ய போகிறோம் என்ன ஒரு பொது கருத்து என்று,
குறியீடு இந்த ஆழத்திற்கு நாம்.
>> இந்த அடைவில், நாம் இரண்டு சி கோப்புகள் மற்றும் அதற்கான இயங்கக்கூடிய கோப்புகள் இல்லை.
தட்டச்சு திட்டம், ஒரு கட்டளை வரி வாதத்தை எடுத்து
நாம் உருவாக்க விரும்பும் ஆவணத்தின் பெயர்.
இந்த வழக்கில், நாம் அதை doc.txt அழைக்கிறேன்.
திட்டத்தை இயக்க மற்றும் வரிகளை ஒரு ஜோடி அனுமதித்தார்.
Hi. என் பெயர் ஜேசன் உள்ளது.
இறுதியாக, நாம் "விலகினார்." தட்டச்சு செய்யலாம்
நாம் இப்போது, இந்த கோப்புகளும் அனைத்து பட்டியலிட வேண்டும்
நாம் ஒரு புதிய ஆவணம் doc.txt என்று உள்ளதா என்று பார்க்க.
கோப்பு தான் உருவாக்கிய இந்த திட்டம் என்று.
மற்றும் நிச்சயமாக, அது மிகவும் பூஜ்ஜியங்களும் ஒன்றுகளும் ஒரு நீண்ட வரிசையை தவிர வேறொன்றுமில்லை.
நாம் இந்த புதிய கோப்பினை திறக்கும் போது,
நாம் நம் நிரலை உள்ளிட்ட குறியீடு 3 வரிகளை பாருங்கள் -
Hi. மே பெயர் ஜேசன் உள்ளது.
ஆனால் என்ன உண்மையில் typewriter.c இயங்கும் போது நடக்கிறது?
எங்களுக்கு வட்டி முதல் வரி வரி 24 ஆகும்.
இந்த வரிசையில், நாம் கோப்பு சுட்டிக்காட்டி அறிவிக்க.
இந்த சுட்டிக்காட்டி, fopen கொடுக்கிறது என்று செயல்பாடு, இரு வாதங்கள் எடுத்து கொள்கிறது.
முதல் கோப்பு நீட்டிப்பு சரியான உள்ளிட்ட கோப்பு பெயர்.
ஒரு கோப்பு நீட்டிப்பு அதன் குறைந்த அளவில் கோப்பு தாக்கம் இல்லை என்று நினைவு.
நாம் எப்போதும் பூஜ்ஜியங்களும் ஒன்றுகளும் ஒரு நீண்ட வரிசை கையாள்வதில்.
ஆனால் அது கோப்புகளை மாகவும் என்ன பயன்பாடுகள் அவற்றை திறக்க பயன்படுத்தப்படும் எப்படி செல்வாக்கு இல்லை.
fopen இரண்டாவது வாதம் ஒரு கடிதம்
என்று நாம் கோப்பை திறக்க பிறகு செய்ய திட்டமிட்டுள்ளோம் என்ன உள்ளது.
W, R, மற்றும் ஏ - இந்த வாதத்தை மூன்று விருப்பங்கள் உள்ளன
நாம் கோப்பு எழுத வேண்டும், ஏனெனில் நாங்கள் இந்த வழக்கில் w தேர்வு.
ஆர், ஒருவேளை நீங்கள் யூகிக்க முடியும் என, கோப்பை படிக்க வேண்டும்.
ஒரு கோப்பில் சேர்ப்பதன் உள்ளது.
அதே w மற்றும் ஒரு கோப்புகளை எழுத பயன்படுத்தப்படும் இரண்டு,
w கோப்பு தொடக்கத்தில் இருந்து எழுத தொடங்கும்
மற்றும் திறன் முன்பே சேமிக்கப்பட்ட என்று எந்த தரவு மேலெழுதும்.
முன்னிருப்பாக, ஏற்கனவே இல்லை என்றால் நாம் திறக்க கோப்பு,
நம் தற்போது வேலை அடைவில் உருவாக்கப்படும்.
எனினும், நாம் வேறு ஒரு இடத்தில் ஒரு கோப்பு அணுக அல்லது உருவாக்க விரும்பினால்,
fopen முதல் வாதம் இல்,
நாம் கோப்பு பெயர் கூடுதலாக ஒரு கோப்பு பாதையை குறிப்பிட வேண்டும்.
இந்த பணியின் முதல் பகுதியாக நீண்ட குறியீடு மட்டுமே ஒரு வரி, போது
அது கோடுகள் மற்றொரு தொகுப்பில் சேர்க்க எப்போதும் நல்ல நடைமுறையில் உள்ளது
அந்த கோப்பு வெற்றிகரமாக திறக்கப்பட்டது அல்லது உருவாக்கப்பட்டது என்பதை உறுதி செய்ய சரிபார்க்கவும்.
Fopen பூஜ்ய கொடுக்கிறது என்றால், நாம், நம் திட்டத்தை சிறிதும் தீங்கிழைப்பவர் விரும்பவில்லை
இயங்கு நினைவக வெளியே இருந்தால் இந்த நடக்கலாம்
அல்லது நாம் சரியான அனுமதிகள் இல்லை, இது ஒரு அடைவில் ஒரு கோப்பை திறக்க முயற்சி செய்தால்.
>> பணியின் ஒரு பகுதியாக இரண்டு தட்டச்சு இன் போது சுழற்சி நடைபெறுகிறது.
நாம், பயனர் உள்ளீடு பெற ஒரு CS50 நூலகம் செயல்பாட்டை பயன்படுத்த
மேலும், அவர்கள் திட்டத்தை விட்டு விரும்பவில்லை அனுமானித்து
நாம் சரம் எடுத்து அதை கோப்பில் எழுத செயல்பாடு fputs பயன்படுத்த.
fputs நாம் கோப்பு எழுத பயன்படுத்த முடியும் பல செயல்பாடுகளை மட்டுமே உள்ளது.
மற்றவை fwrite, fputc, மற்றும் கூட fprintf அடங்கும்.
எந்த குறிப்பிட்ட செயல்பாட்டை நாம், எனினும், பயன்படுத்தி முடிவுக்கு
அவர்கள் அனைவரும், தங்கள் வாதங்களை வழியாக, எனக்கு வேண்டும்
குறைந்தது இரண்டு விஷயங்கள் -
என்ன அது எழுதப்பட்ட வேண்டும் அங்கு எழுதி வேண்டும்.
நம் வழக்கில், உள்ளீடு எழுதப்பட்ட வேண்டும் என்று சரம்
மற்றும் கைரேகை நாம் எழுதும் நீங்கள் எங்கே நம்மை நேரடியாக என்று சுட்டிக்காட்டி இருக்கிறது.
இந்த திட்டத்தில், செயல்முறை பகுதியாக இரண்டு மாறாக நேர்மையானவன்.
நாம் வெறுமனே பயனர் ஒரு சரம் பேசிக்கொண்டு
மற்றும் நம் கோப்பு நேரடியாக அதை சேர்த்து சிறிது-க்கு இல்லை உள்ளீட்டு சரிபார்த்தல் அல்லது பாதுகாப்பு காசோலைகளை.
பெரும்பாலும், இருப்பினும், பகுதி இரண்டு உங்கள் குறியீடு பெரும்பகுதி வரை எடுக்கும்.
நாம் கோப்பு மூட அங்கு இறுதியாக, பகுதி மூன்று, வரி 58 ஆகும்.
இங்கே நாம் அசல் கோப்பு சுட்டிக்காட்டி fclose மற்றும் அதை கடத்துவதற்கு அழைப்பு.
பின்னர் வரிசையில், நாம் நம் திட்டத்தை முடிவுக்கு சமிக்ஞையாக, பூஜ்யம் திருப்பி.
மற்றும், ஆமாம், பகுதி மூன்று என்று போன்றவையாக இருக்கும்.
>> இந்த கோப்புகளை படித்து செல்ல அனுமதிக்க.
மீண்டும் எங்கள் அடைவில் நாம் printer.c என்று ஒரு கோப்பு உள்ளது.
நாம் தான் உருவாக்கிய கோப்பு அதை இயக்க அனுமதி -
doc.txt.
இந்த திட்டம், பெயர் குறிப்பிடுவதை போல, வெறுமனே கோப்பின் உள்ளடக்கங்களை அதை கடந்து அவுட் அச்சிட வேண்டும்.
அங்கு நமக்கு அது.
குறியீடு வரிகளை நாம் முன்னர் தட்டச்சு மற்றும் doc.txt சேமிக்கப்படும்.
Hi. என் பெயர் ஜேசன் உள்ளது.
என்றால் printer.c கொண்டு நாம் ஆழத்திற்கு,
நாம் குறியீடு நிறைய நாம் தான் typewriter.c உள்ள வழியாக நடந்து என்ன ஒத்த தெரிகிறது என்று பார்க்க.
நாம் கோப்பை திறந்து, அங்கு உண்மையில் வரி 22,,
நாம் கோப்பு மூடப்பட்டு அங்கு மற்றும் வரி 39,,
இரண்டு typewriter.c கிட்டத்தட்ட ஒரே மாதிரியானவை, fopen இரண்டாவது வாதம் சேமிக்கப்படும்.
நாம் ஒரு கோப்பு பாடிக்கொண்டிருக்கிறீர்கள் இந்த நேரத்தில்,
நாம் w பதிலாக r தேர்வு.
எனவே, இந்த செயல்பாட்டின் இரண்டாவது பகுதி கவனம் செலுத்த வேண்டும்.
வரி 35 ல், நம் 4 வட்டத்திற்கு இரண்டாவது நிலை என,
நாம், fgets ஒரு அழைப்பை
முன் இருந்து fputs செய்ய துணை செயல்பாடு.
நாங்கள் மூன்று வாதங்கள் இந்த நேரம்.
முதல் சரம் சேமிக்கப்படும் அங்கு எழுத்துக்கள் வரிசைக்கு சுட்டிக்காட்டி இருக்கிறது.
இரண்டாவது படிக்க வேண்டும் கதாபாத்திரங்கள் அதிகபட்ச எண்ணிக்கை ஆகும்.
மற்றும் மூன்றாவது நாங்கள் பணியாற்றி வருகிறோம் எந்த கோப்பில் சுட்டிக்காட்டி இருக்கிறது.
நீங்கள் fgets பூஜ்ய திரும்பும் போது லூப் முடியும் என்று கவனிக்க வேண்டும்.
இந்த நடந்தது என்று இரண்டு காரணம் உள்ளது.
முதல், ஒரு பிழை ஏற்பட்டது.
இரண்டாவது, மேலும் பெரும்பாலும், கோப்பு இறுதியில் அடைந்தது மேலும் எழுத்துக்கள் படிக்க வேண்டும்.
நீங்கள் என்ன செய்கிறீர்கள் வழக்கில், இரண்டு செயல்பாடுகளை நாம் சொல்ல அனுமதிக்க வேண்டும் என்று இல்லை
எந்த காரணம் இந்த குறிப்பிட்ட பூஜ்ய சுட்டிக்காட்டி காரணம் என்று.
மற்றும், இல்லை எனவேதான், அவர்கள் கோப்புகள் வேலை செய்ய வேண்டும் என்பதால்,
ferror செயல்பாடு மற்றும் feof செயல்பாடு தொடக்கத்தில் கடிதம் f உடனான. இரு
>> இறுதியாக, நாம் முடிவுக்கு முன், கோப்பு விழா முடிவில் பற்றி ஒரு விரைவான குறிப்பு,
இதில், ஒரு குறிப்பிட்ட என, feof என்று எழுதப்படுகிறது.
பெரும்பாலும் நீங்கள் போது மற்றும் சுழல்கள் என்று படிப்படியாக கோப்புகள் மூலம் உங்கள் வழியில் படிக்க பயன்படுத்தி உங்களை பார்க்கிறேன்.
நீங்கள் இந்த கோப்புகளை அடையும் பிறகு இவ்வாறு, இந்த சுழல்கள் முடிவுக்கு ஒரு வழி வேண்டும்.
உங்கள் கோப்பு சுட்டிக்காட்டி மீது feof அழைப்பு அது உண்மை என்பதை சோதனை
நான் அதை செய்ய வேண்டும்.
இதனால், நிலை (! Feof (ரேகை)) ஒரு நேரத்தில் வளைய ஒரு செய்தபின் பொருத்தமான தீர்வு போல இருக்கும்.
எனினும், நாம் நமது உரை கோப்பில் விட்டு ஒரு வரியில் சொல்ல.
நாங்கள் எங்கள் போது வளைய உள்ளிட வேண்டும் மற்றும் திட்டமிட்டபடி எல்லாம் வெளியே வேலை செய்யும்.
மூலம் அடுத்த சுற்று, எங்கள் திட்டம், கைரேகை மற்றும் feof உண்மையானது என்பதை பார்க்கும்
ஆனால் - இந்த இங்கே புரிந்து கொள்ள முக்கிய புள்ளி ஆகும் -
அது இன்னும் உண்மையாக இருக்க முடியாது.
Feof நோக்கம் சரிபார்க்க முடியவில்லை, ஏனெனில் அது தான்
ஒரு வாசிக்க செயல்பாடு அடுத்த அழைப்பு கோப்பை இறுதி வெற்றி என்று,
மாறாக கோப்பை இறுதியில் ஏற்கனவே அடைந்து வருகிறது அல்லது சரிபார்க்க.
இந்த உதாரணம் வழக்கில்,
எங்கள் கோப்பில் கடைசி வரி படிக்கும் செய்தபின் சுமூகமாக,
ஆனால் நிரல் இன்னும் நாம் கோப்பை இறுதி வெற்றி என்று தெரியவில்லை.
இது ஒரு கூடுதல் வாசிப்பு செய்யும் வரை அது தான் கவுண்டர்கள் கோப்பை இறுதியில் அந்த.
எனவே, ஒரு சரியான நிலையில் பின்வரும் வேண்டும்:
fgets மற்றும் அதன் மூன்று வாதங்கள் - வெளியீடு, வெளியீடு அளவு, மற்றும் கைரேகை -
அந்த சமமாக அனைத்து பூஜ்ய வேண்டும்.
இந்த, நாம் printer.c உள்ள எடுத்து அணுகுமுறையாகும்
இந்த வழக்கில், சுழற்சி வெளியேறும் பின்னர்,
நீங்கள் feof அல்லது ferror இந்த வளைய வெளியேறும் குறிப்பிட்ட காரணம் என பயனர் அழைத்து தெரிவி முடியும்.
>> இந்த கட்டுரை எழுதுதல் மற்றும் ஒரு கோப்பை படித்து, அதன் அடிப்படை நேரத்தில், தான்
ஒரு எளிய 3 பகுதி செயல்.
முதல், நாம் கோப்பை திறக்க.
இரண்டாவது, நாங்கள் எங்கள் கோப்பில் சில விஷயங்களை வைத்து அல்லது அதை வெளியே சில விஷயங்களை எடுத்து.
மூன்றாவது, நாம் கோப்பு மூட.
முதல் மற்றும் கடைசி பகுதிகளில் எளிது.
தந்திரமான பொருள் எங்கிருக்கிறது நடுத்தர பகுதியாக உள்ளது.
மற்றும் இருப்பினும் பேட்டை அடியில் நாங்கள் எப்போதும், பூஜ்ஜியங்களும் ஒன்றுகளும் ஒரு நீண்ட வரிசை கையாள்வதில்
சாராம்சம் ஒரு அடுக்கு சேர்க்க குறியீட்டு போது அது உதவி
இன்னும் நெருக்கமாக நாம் பார்ப்பது வழக்கம் என்ன ஒத்திருக்கிறது என்று ஏதாவது ஒரு காட்சியில் மாறும்.
உதாரணமாக, நாம் ஒரு 24 பிட் பிட்மேப் கோப்பு வேலை என்றால்,
நாம் அநேகமாக படிக்கும் அல்லது ஒரு நேரத்தில் மூன்று பைட்டுகள் எழுதும்.
இதில், அதை வரையறை மற்றும் சரியான பெயரை உணர்வு என்று
3 பைட்டுகள் பெரிய ஒரு struct.
>> கோப்புகள் வேலை சிக்கலான தோன்றலாம் என்றாலும்,
அவற்றை பயன்படுத்தி எங்களுக்கு உண்மையிலேயே குறிப்பிடத்தக்க ஏதாவது செய்ய அனுமதிக்கிறது.
நாம், நம் திட்டத்தை வெளி மாநில மாற்றலாம்
நாம், நம் திட்டத்தை வாழ்க்கையை தாண்டி வாழ்ந்து என்று ஒன்று உருவாக்க முடியும்
அல்லது நாம் இயங்குவதாக தொடங்கியது முன்னர் உருவாக்கப்பட்டது என்று ஏதாவது மாற்ற முடியும்.
கோப்புகளை தொடர்பு சி நிரலாக்கம் ஒரு உண்மையான சக்தி வாய்ந்த பகுதியாகும்
மற்றும் நான், நீங்கள் வந்து குறியீடு உள்ள அதை உருவாக்க போகிறோம் என்ன பார்க்க மிகவும் ஆர்வமாக உள்ளேன்.
என் பெயர் ஜேசன் ஹிர்ஸ்கோஹார்ன் உள்ளது. இந்த CS50 உள்ளது.
[CS50.TV]
>> [சிரிப்பு]
சரி. ஒரு எடுத்து. இங்கே நாம்.
நாம் ஒரு கோப்பு நினைக்கும் போது - >> ஓ, காத்திருக்க. மன்னிக்கவும்.
[சிரிப்பு] சரி.
அங்கு ஏ.
நாம் ஒரு கோப்பு நினைக்கும் போது -
நீங்கள் ஒரு கோப்பு நினைக்கும் போது - சரி. நீங்கள் தயாராக இருக்கும்போது என்னிடம்.
ஓ, பெரும்.
ஒரு teleprompter இருந்து படித்து இருந்தாலும் தோன்றலாம் - இல்லை. என் கெட்ட.