C ක්රමලේඛකයා විසින් පෙළ ගොනුවක් හෝ ද්විමය ගොනුවක් නිර්මාණය කරන ආකාරය, විවෘත කරන සහ වසා දමන ආකාරය විස්තර කරයි.
ගොනුවක්, යනු බයිට් මාලාවක්, එය පෙළ ගොනුවක් හෝ ද්විමය ගොනුවක් වේවා, C Language, ඉහළ මට්ටමේ කාර්යයන් වෙත ප්රවේශය ලබා දෙනවා පමණක් නොව, ගබඩා උපාංගයේ ගොනු සැකසීමට යටින් පවතින (OS) ඇමතුම ද සපයයි. . මෙම පරිච්ඡේදය ලේඛන කළමනාකරණයේ වැදගත් ඇමතුම් පැහැදිලි කරනු ඇත.
විවෘත ගොනුව
සාමාන්යයෙන් නව ගොනුවක් සෑදීමට හෝ පවතින ගොනුවක් විවෘත කිරීමට fopen () ශ්රිතය භාවිතා කරමින්, මෙම ඇමතුම මඟින් ප්රවාහය පාලනය කිරීමට අවශ්ය සියලු තොරතුරු අඩංගු FILE වර්ගයේ වස්තුවක් ආරම්භ කරයි. මෙන්න මෙම ශ්රිත ඇමතුමේ මූලාකෘතිය:
FILE *fopen (const char * ගොනු නාමය, const char * මාදිලිය);
මෙහි ගොනු නාමය යනු ගොනුවක් නම් කිරීම සඳහා වන තන්තුවකි, ප්රවේශ මාදිලියේ අගය පහත අගයන්ගෙන් එකක් විය හැක:
රටාව | විස්තරය |
r | එය කියවීමට ඉඩ දෙන දැනට පවතින පෙළ ගොනුවක් විවෘත කරන්න. |
w | ගොනුවට ලිවීමට ඉඩ දෙන පෙළ ගොනුවක් විවෘත කරන්න. ගොනුව නොමැති නම්, නව ගොනුවක් සාදනු ලැබේ. මෙන්න, ඔබේ වැඩසටහන ගොනුවේ ආරම්භයේ සිට අන්තර්ගතය ලියයි. ගොනුව තිබේ නම්, එය ශුන්ය දිගට කපා නැවත ලියා ඇත. |
a | පෙළ ගොනුවක් විවෘත කර ඇමුණුම් මාදිලියකින් ගොනුවට ලියන්න. ගොනුව නොමැති නම්, නව ගොනුවක් සාදනු ලැබේ. මෙන්න, ඔබේ වැඩසටහන ඔබට දැනටමත් ඇති ගොනුවලට අන්තර්ගතය එකතු කරයි. |
r+ | ඔබට ගොනුව කියවීමට සහ ලිවීමට ඉඩ සලසන පෙළ ගොනුවක් විවෘත කරන්න. |
w+ | ඔබට ගොනුව කියවීමට සහ ලිවීමට ඉඩ සලසන පෙළ ගොනුවක් විවෘත කරන්න. ගොනුව දැනටමත් තිබේ නම්, ගොනුව ශුන්ය දිගට කපා ඇත, ගොනුව නොමැති නම්, නව ගොනුවක් සාදනු ලැබේ. |
a+ | ඔබට ගොනුව කියවීමට සහ ලිවීමට ඉඩ සලසන පෙළ ගොනුවක් විවෘත කරන්න. ගොනුව නොමැති නම්, නව ගොනුවක් සාදනු ලැබේ. කියවීම ආරම්භ වන්නේ ගොනුවේ ආරම්භයේ වන අතර, ලිවීම ඇමුණුම් ආකාරයෙන් පමණි. |
ද්විමය ගොනුව සකසන ලද්දේ නම්, ඉහත ප්රතිස්ථාපනය කිරීමට පහත ප්රවේශ මාදිලිය භාවිතා කරන්න:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
සංවෘත ගොනුව
ගොනුව වැසීමට කරුණාකර fclose() ශ්රිතය භාවිතා කරන්න. කාර්යයේ මූලාකෘතිය පහත පරිදි වේ:
int fclose (FILE *fp);
- ගොනුව සාර්ථකව වසා දැමුවහොත්, fclose() ශ්රිතය ශුන්යය ලබා දෙයි, සහ දෝෂය EOF වෙත ආපසු ලබා දෙයි. මෙම කාර්යය ඇත්ත වශයෙන්ම, බෆරයෙන් දත්ත ඉවත් කරයි, ගොනුව වසා දමයි, සහ එම ගොනුව සඳහා භාවිතා කරන සියලුම මතකය මුදා හරියි. EOF යනු stdio.h යන ශීර්ෂ ගොනුවේ නියත අර්ථ දැක්වීමකි
C සම්මත පුස්තකාලය මඟින් ලිපිගොනු කියවීමට සහ ලිවීමට අක්ෂර මඟින් හෝ ස්ථාවර දිග තන්තුවක් ලෙස විවිධ කාර්යයන් සපයයි.
ගොනුවට ලියන්න
ප්රවාහයට අක්ෂර ලිවීමට ඇති සරලම කාර්යයන් මෙන්න:
int fputc ( int c , FILE *fp );
fputc () ශ්රිතය c පරාමිතියේ අක්ෂර අගය fp පෙන්වා දෙන ප්රතිදාන ප්රවාහයට ලියයි. ලිවීම් සාර්ථක නම්, එය ලිඛිත අක්ෂරය සහ දෝෂයක් සිදුවුවහොත් EOF ලබා දෙයි. ප්රවාහයට null එකකින් අවසන් වන තන්තුවක් ලිවීමට ඔබට පහත ශ්රිතය භාවිතා කළ හැක:
int fputs ( const char *s , FILE *fp );
fputs () යන ශ්රිතය fp පෙන්වා දෙන ප්රතිදාන ප්රවාහයට s තන්තුව ලියයි. ලිවීම් සාර්ථක වුවහොත්, එය සෘණ නොවන අගයක් සහ දෝෂයක් සිදුවුවහොත් EOF ලබා දෙයි. ඔබට int fprintf (FILE * fp, const char * ආකෘතිය,...) ගොනුවට තන්තුවක් ලිවීමේ කාර්යය ද භාවිතා කළ හැකිය. පහත උදාහරණය උත්සාහ කරන්න:
සටහන: ඔබ සතුව tmp නාමාවලියක් ඇති බවට වග බලා ගන්න, එය නොපවතියි නම්, ඔබ එය මුලින්ම ඔබේ පරිගණකයේ නිර්මාණය කළ යුතුය.
/ tmp සාමාන්යයෙන් Linux පද්ධතියේ තාවකාලික නාමාවලියකි. ඔබ වින්ඩෝස් පද්ධතිය මත ධාවනය කරන්නේ නම්, ඔබ එය දේශීය පරිසරයේ පවතින නාමාවලියකට වෙනස් කළ යුතුය, එනම්: C: \ tmp, D: \ tmp, ආදිය.
ජීවමාන ආදර්ශය
#ඇතුළත්
ඉහත කේතය සම්පාදනය කර ක්රියාත්මක කළ විට, එය නව ගොනු test.txt inthe / tmp නාමාවලියක් නිර්මාණය කරයි. සහ විවිධ කාර්යයන් දෙකක් භාවිතා කරමින් පේළි දෙකකට ලියන්න. අපි ඊළඟට මේ ගොනුව කියවමු.
ගොනුව කියවන්න
ගොනුවකින් තනි අක්ෂරයක් කියවීමේ සරලම කාර්යය පහත දැක්වේ:
int fgetc (FILE * fp);
fgetc () ශ්රිතය fp යොමු කරන ආදාන ගොනුවෙන් අක්ෂරයක් කියවයි. ප්රතිලාභ අගය කියවීමේ අක්ෂරය සහ දෝෂයක් සිදුවුවහොත් EOF වේ. පහත ශ්රිතය ඔබට ප්රවාහයකින් තන්තුවක් කියවීමට ඉඩ දෙයි:
char *fgets (char *buf, int n, FILE *fp);
fgets () ශ්රිතය fp මගින් අධ්යක්ෂණය කරන ලද ආදාන ප්රවාහයෙන් n-1 අක්ෂර කියවයි. එය කියවීමේ තන්තුව බෆර බුෆ් වෙත පිටපත් කරන අතර තන්තුව අවසන් කිරීමට අවසානයේ ශුන්ය අක්ෂරයක් එකතු කරයි.
මෙම ශ්රිතය අවසන් අක්ෂරය කියවීමට පෙර බිඳුණු රේඛා අක්ෂරයක් '\ n' හෝ ගොනුවේ කෙළවරේ EOF හමු වුවහොත්, රේඛා බිඳීම් ඇතුළුව කියවූ අක්ෂර වෙත පමණක් ආපසු පැමිණේ. ගොනුවෙන් තන්තුව කියවීමට ඔබට int fscanf (FILE * fp, const char * ආකෘතිය,...) ශ්රිතය භාවිතා කළ හැක, නමුත් එය පළමු ඉඩ සහ රේඛා බිඳීම හමු වූ විට එය කියවීම නතර කරයි.
ජීවමාන ආදර්ශය
#ඇතුළත්
ඉහත කේතය සම්පාදනය කර ක්රියාත්මක කළ විට, එය පෙර කොටසේ සාදන ලද ගොනු කියවා පහත ප්රතිඵල ලබා දෙයි:
1: මෙම 2: fprintf සඳහා පරීක්ෂා කරයි...
3: මෙය fputs සඳහා පරීක්ෂණයකි...
පළමුව, fscanf() හි ක්රමය මෙය කියවන්නේ මෙය .එනම් එයට පිටුපසින් ඉඩක් හමු වන බැවිනි. දෙවනුව, පේළියේ අවසානය දක්වා ඉතිරි කොටස කියවීමට functon fgets () අමතන්න. අවසාන වශයෙන්, දෙවන පේළිය සම්පූර්ණයෙන්ම කියවීමට fgets () අමතන්න.
ද්විමය I / O ශ්රිතය
ද්විමය ආදානය සහ ප්රතිදානය සඳහා පහත ශ්රිත දෙක භාවිතා වේ:
size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );
ශ්රිත දෙකම ගබඩා කුට්ටි සඳහා කියවීම සහ ලිවීම - සාමාන්යයෙන් අරා හෝ ව්යුහයන් සඳහා.
ඉහත C ගොනු කියවීම සහ ලිවීම මෘදුකාංග තාක්ෂණික මෙහෙයුමක් වන HDV Phoelectron Technology Ltd. සහ ජාලය සම්බන්ධ උපකරණ සඳහා සමාගම (එවැනි: ACONU/ සන්නිවේදනයONU/ බුද්ධිමත්ONU/ කෙඳිONU, etc.) බලගතු මෘදුකාංග කණ්ඩායමක් එකතු කර ඇත, සෑම පාරිභෝගිකයෙකුටම අවශ්ය සුවිශේෂී ඉල්ලීම් අභිරුචිකරණය කිරීමට, අපගේ නිෂ්පාදන වඩාත් බුද්ධිමත් හා උසස් වීමට ඉඩ හරින්න.