$lang['tuto'] = "பயிற்சிகள்"; ?> கோப்பு வெளியீட்டில்

கோப்பு வெளியீட்டில் எதிர்பாராத சீன எழுத்துக்கள்: பிழைத்திருத்த சி கோப்பு கையாளுதல்

Temp mail SuperHeros
கோப்பு வெளியீட்டில் எதிர்பாராத சீன எழுத்துக்கள்: பிழைத்திருத்த சி கோப்பு கையாளுதல்
கோப்பு வெளியீட்டில் எதிர்பாராத சீன எழுத்துக்கள்: பிழைத்திருத்த சி கோப்பு கையாளுதல்

உங்கள் சி நிரல் உரைக்கு பதிலாக அபத்தமானதாக எழுதும்போது

நீங்கள் சி கற்கத் தொடங்கியுள்ளீர்கள், மேலும் கோப்பு கையாளுதலை முயற்சிக்க உற்சாகமாக இருக்கிறீர்கள். உரை கோப்பில் "ஹலோ வேர்ல்ட்" ஐ சேமிக்க ஒரு எளிய நிரலை எழுதுகிறீர்கள், ஆனால் நீங்கள் கோப்பைத் திறக்கும்போது, ​​உரை விசித்திரமான சீன எழுத்துக்களால் மாற்றப்படுகிறது. 🤯 என்ன தவறு?

இந்த பிரச்சினை மிகவும் வெறுப்பாக இருக்கும், குறிப்பாக ஆரம்பநிலைக்கு. தவறான கோப்பு கையாளுதல், தவறாகப் பயன்படுத்தப்பட்ட செயல்பாடுகள் அல்லது குறியாக்க சிக்கல்கள் காரணமாக இது பெரும்பாலும் நிகழ்கிறது. உங்கள் நிரல் சரியாக படிக்கவோ எழுதவோ இல்லை என்றால், அது தரவை எதிர்பாராத வழிகளில் விளக்கக்கூடும்.

ஆங்கிலத்தில் ஒரு குறிப்பை எழுதுவதை கற்பனை செய்து பாருங்கள், ஆனால் நீங்கள் அதை ஒரு நண்பரிடம் ஒப்படைக்கும்போது, ​​அவர்கள் அதை முற்றிலும் மாறுபட்ட மொழியில் படித்தார்கள். உங்கள் குறியீட்டிற்குள் அதுதான் நடக்கிறது! கோப்பு சுட்டிகள் முறையற்ற கையாளுதல் அல்லது கோப்பைப் படிப்பதற்கான படிகளைக் காணவில்லை என்பதன் காரணமாக சிக்கல் இருக்கலாம்.

இந்த கட்டுரையில், சிக்கலை ஏற்படுத்துவதை நாங்கள் உடைப்போம், உங்கள் குறியீட்டை பகுப்பாய்வு செய்து, சி. இல் உள்ள கோப்பு I/O ஐ கையாள சரியான வழியின் மூலம் உங்களுக்கு வழிகாட்டுவோம். முடிவில், நீங்கள் நம்பிக்கையுடன் உரை கோப்புகளை எழுதி படிக்க முடியும் எதிர்பாராத ஆச்சரியங்கள் இல்லாமல். .

கட்டளை பயன்பாட்டின் எடுத்துக்காட்டு
fopen வெவ்வேறு முறைகளில் ஒரு கோப்பைத் திறக்கப் பயன்படுகிறது (படிக்கவும், எழுதவும், சேர்க்கவும்). இந்த வழக்கில், கோப்புகளை சரியாக எழுதுவதற்கும் வாசிப்பதற்கும் இது முக்கியமானது.
fgets ஒரு கோப்பிலிருந்து ஒரு வரியைப் படித்து அதை ஒரு இடையகத்தில் சேமிக்கிறது. இடையக வழிதல் தடுக்கவும் சரியான கோப்பு வாசிப்பை உறுதிப்படுத்தவும் இது பயனுள்ளதாக இருக்கும்.
fprintf வடிவமைக்கப்பட்ட வெளியீட்டை ஒரு கோப்பில் எழுதுகிறார். கட்டமைக்கப்பட்ட உரை அடிப்படையிலான தரவை எழுதுவதற்கு இது `fwrite` க்கு பதிலாக பயன்படுத்தப்படுகிறது.
perror நிகழ்ந்த கடைசி கணினி பிழை தொடர்பான பிழை செய்தியை அச்சிடுகிறது. கோப்பு I/O சிக்கல்களை பிழைத்திருத்துவதற்கு பயனுள்ளதாக இருக்கும்.
exit வெளியேறும் நிலையுடன் உடனடியாக நிரலை நிறுத்துகிறது. முக்கியமான கோப்பு பிழைகளை கையாள இங்கே பயன்படுத்தப்படுகிறது.
fclose தரவு சேமிக்கப்படுவதை உறுதிசெய்ய திறந்த கோப்பை மூடுகிறது மற்றும் வள கசிவுகள் எதுவும் ஏற்படாது.
sizeof தரவு வகை அல்லது மாறியின் பைட்டுகளில் அளவை வழங்குகிறது. தரவைப் படிக்க இடையகங்களை ஒதுக்கும்போது பயனுள்ளதாக இருக்கும்.
பூஜ்ய சுட்டிக்காட்டி குறிக்கும் மேக்ரோ. `ஃபோபன்` க்குப் பிறகு ஒரு கோப்பு சுட்டிக்காட்டி செல்லுபடியாகுமா என்பதைச் சரிபார்க்கப் பயன்படுகிறது.
while (fgets(...)) முழு உள்ளடக்கமும் பாதுகாப்பாக மீட்டெடுக்கப்படுவதை உறுதிசெய்து, ஒரு சுழற்சியில் வரி மூலம் ஒரு கோப்பு வரியைப் படிக்கிறது.

சி இல் கோப்பு கையாளுதலைப் புரிந்துகொள்வது: உங்கள் உரை ஏன் அபத்தமானது

C இல் I/O கோப்புடன் பணிபுரியும் போது, ​​தரவு சரியாக எழுதப்பட்டிருப்பதை உறுதிசெய்வது மற்றும் படிக்க முக்கியமானது. உரை பிரச்சினை மாறுகிறது சீன எழுத்துக்கள் அல்லது படிக்க முடியாத பிற சின்னங்கள் பெரும்பாலும் கோப்பு சுட்டிகள் தவறான கையாளுதலிலிருந்து எழுகின்றன. முதல் ஸ்கிரிப்ட்டில், நாங்கள் ஒரு கோப்பைத் திறக்க முயற்சித்தோம், அதில் "ஹலோ வேர்ல்ட்" என்று எழுதினோம், பின்னர் அதை மீண்டும் படித்தோம். எவ்வாறாயினும், ஒரு பெரிய தவறு இருந்தது the கோப்பிற்கு எழுதிய பின்னர், முந்தைய நிகழ்வை சரியாக மூடாமல் அதை வாசிப்பு பயன்முறையில் மீண்டும் திறந்தோம். இது எதிர்பாராத நடத்தையை ஏற்படுத்தியது, ஏனெனில் இரண்டாவது `ஃபோபன்` அழைப்பு கோப்பு சுட்டிக்காட்டி சேமிக்கவில்லை, இது வரையறுக்கப்படாத வாசிப்பு செயல்பாட்டிற்கு வழிவகுக்கிறது.

சரிசெய்யப்பட்ட அணுகுமுறையில், ஒவ்வொரு கோப்பு செயல்பாடும் சிறந்த நடைமுறைகளைப் பின்பற்றுவதை உறுதி செய்தோம். நிரல் முதலில் `fprintf` ஐப் பயன்படுத்தி தரவை எழுதுகிறது, பின்னர் கோப்பை வாசிப்பதற்காக மீண்டும் திறப்பதற்கு முன்பு மூடுகிறது. இது கோப்பு சுட்டிக்காட்டி ஊழலைத் தடுக்கிறது மற்றும் தரவு சரியாக வாசிக்கப்படுவதை உறுதி செய்கிறது. மற்றொரு முக்கிய முன்னேற்றம் சேர்த்தது பிழை கையாளுதல் `பெர்ர்` ஐப் பயன்படுத்துதல். ஒரு கோப்பு செயல்பாடு தோல்வியுற்றால், மரணதண்டனை தொடர்ந்து கண்மூடித்தனமாக மரணதண்டனைக்கு பதிலாக பிழை செய்தி அச்சிடப்படுகிறது, இது தரவு ஊழல் அல்லது செயலிழப்புகளுக்கு வழிவகுக்கும். ஒரு கடிதத்தை எழுத முயற்சிப்பதை கற்பனை செய்து பாருங்கள், ஆனால் ஒரு பேனாவை எடுக்க மறந்துவிடுங்கள் the பிழைகள் சரிபார்க்காமல், நிரல் இதேபோன்ற குழப்பமான முறையில் செயல்படுகிறது! .

எழுதுவதற்கும் வாசிப்பதற்கும் தனித்தனி செயல்பாடுகளை அறிமுகப்படுத்துவதன் மூலம் நிரலை மேலும் கட்டமைக்கப்பட்டதாக மாற்றினோம். இது குறியீட்டை மட்டு மற்றும் மீண்டும் பயன்படுத்தக்கூடியதாக ஆக்குகிறது, இது பிழைத்திருத்த மற்றும் செயல்பாட்டை எளிதாக நீட்டிக்க அனுமதிக்கிறது. எடுத்துக்காட்டாக, ஹார்ட்கோட் செய்திக்கு பதிலாக பயனர் உள்ளீடு செய்யப்பட்ட உரையை எழுத விரும்பினால், முழு நிரலையும் மாற்றாமல் `ரைட் டோஃபைல்` செயல்பாட்டை மாற்றலாம். இந்த மட்டு அணுகுமுறை ஒரு பையுடனும் தனித்தனி பெட்டிகளைப் பயன்படுத்துவதைப் போன்றது - ஒவ்வொரு செயல்பாடும் ஒரு குறிப்பிட்ட பணியைக் கையாளுகிறது, ஒட்டுமொத்த நிரலை ஒழுங்காகவும் திறமையாகவும் வைத்திருக்கிறது. .

இறுதியாக, ஒரு `fgets` அழைப்பு போதுமானதாக இருக்கும் என்று கருதுவதற்கு பதிலாக முழு கோப்பையும் படிக்க ஒரு` (fgets ()) `லூப்பைப் பயன்படுத்தினோம். மல்டி-லைன் கோப்புகளைக் கையாளும் போது நாங்கள் எந்த வரியையும் தவறவிடாமல் இருப்பதை இது உறுதி செய்கிறது. சரிசெய்யப்பட்ட நிரல் இப்போது சரியான கோப்பு கையாளுதல் நுட்பங்களைப் பின்பற்றுகிறது, கவர்ச்சியான உரை மற்றும் தவறான வாசிப்புகள் போன்ற சிக்கல்களைத் தவிர்க்கிறது. கட்டமைக்கப்பட்ட நிரலாக்க மற்றும் சிறந்த நடைமுறைகளை ஏற்றுக்கொள்வதன் மூலம், கணிக்க முடியாத நடத்தையை நம்பகமான மற்றும் பராமரிக்கக்கூடிய கோப்பு I/O அமைப்பாக மாற்றுகிறோம். .

சி இல் கோப்பு வெளியீட்டில் எதிர்பாராத எழுத்துக்களைக் கையாளுதல்

C இல் சரியான கையாளுதலுடன் கோப்பு I/O செயல்பாடுகளை செயல்படுத்துகிறது

#include <stdio.h>
#include <stdlib.h>
int main() {
    FILE *fptr;
    fptr = fopen("text.txt", "w"); // Open file in write mode
    if (fptr == ) {
        perror("Error opening file");
        return 1;
    }
    fprintf(fptr, "Hello World\n"); // Write text to file
    fclose(fptr); // Close file

    fptr = fopen("text.txt", "r"); // Open file in read mode
    if (fptr == ) {
        perror("Error opening file");
        return 1;
    }

    char input[100];
    fgets(input, 100, fptr); // Read text from file
    printf("%s", input); // Print read text

    fclose(fptr); // Close file
    return 0;
}

பிழை சரிபார்ப்புடன் சரியான கோப்பு கையாளுதலை உறுதி செய்தல்

கோப்பு நடவடிக்கைகளுக்கு சி இல் வலுவான பிழை கையாளுதலை செயல்படுத்துகிறது

#include <stdio.h>
#include <stdlib.h>
void writeToFile(const char *filename, const char *text) {
    FILE *fptr = fopen(filename, "w");
    if (!fptr) {
        perror("Failed to open file");
        exit(EXIT_FAILURE);
    }
    fprintf(fptr, "%s", text);
    fclose(fptr);
}

void readFromFile(const char *filename) {
    FILE *fptr = fopen(filename, "r");
    if (!fptr) {
        perror("Failed to open file");
        exit(EXIT_FAILURE);
    }
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), fptr)) {
        printf("%s", buffer);
    }
    fclose(fptr);
}

int main() {
    const char *filename = "text.txt";
    writeToFile(filename, "Hello World\n");
    readFromFile(filename);
    return 0;
}

கோப்பு கையாளுதலில் விஷயங்களை குறியாக்கம் செய்வது ஏன்

பெரும்பாலும் எதிர்பாராத சின்னங்களை ஏற்படுத்தும் ஒரு முக்கிய அம்சம் சீன எழுத்துக்கள், C இல் கோப்புகளுக்கு எழுதும்போது குறியாக்கம் செய்யப்படுகிறது. இயல்பாக, உரை கோப்புகள் ஒரு குறிப்பிட்ட குறியாக்க வடிவமைப்பைப் பயன்படுத்தி சேமிக்கப்படுகின்றன, இது எப்போதும் எதிர்பார்க்கப்பட்ட ஒன்றோடு பொருந்தாது. விண்டோஸில், எடுத்துக்காட்டாக, நோட்பேட் யுடிஎஃப் -16 இல் கோப்புகளைச் சேமிக்கக்கூடும், அதே நேரத்தில் சி நிரல் பொதுவாக யுடிஎஃப் -8 அல்லது ஏஎன்எஸ்ஐ இல் எழுதுகிறது. குறியாக்கம் பொருந்தவில்லை என்றால், உரை படிக்க முடியாத சின்னங்களாகத் தோன்றலாம். கோப்பைப் படிக்கும்போது குறியாக்கத்தை வெளிப்படையாக அமைப்பதன் மூலம் இந்த பொருந்தாத தன்மையை தீர்க்க முடியும், எழுதப்பட்டவற்றிற்கும் காண்பிக்கப்படுவதற்கும் இடையில் பொருந்தக்கூடிய தன்மையை உறுதி செய்கிறது. .

மற்றொரு பொதுவான பிரச்சினை கோப்பை மீண்டும் திறப்பதற்கு முன்பு அதை சுத்தப்படுத்தவோ அல்லது சரியாக மூடவோ இல்லை. கோப்பு எழுதும் பயன்முறையில் திறந்து, சரியான மூடல் இல்லாமல் வாசிப்பு பயன்முறையில் அணுகப்பட்டால், உள்ளடக்கம் சரியாக சேமிக்கப்படாது. இது உட்பட எதிர்பாராத முடிவுகளுக்கு வழிவகுக்கும் ஊழல் அல்லது தவறாகப் புரிந்துகொள்ளப்பட்ட தரவு. பயன்படுத்துகிறது fclose கோப்பை மீண்டும் அணுகுவதற்கு முன்பு அனைத்து எழுதப்பட்ட தரவுகளும் செய்யப்படுவதை உறுதி செய்கிறது. இதேபோல், அழைப்பு fflush கோப்பை மூடுவதற்கு முன், எழுதப்படாத தரவை சேமிக்கும்படி கட்டாயப்படுத்துகிறது, பகுதி எழுத்துக்கள் அல்லது படிக்க முடியாத உள்ளடக்கத்தைத் தடுக்கிறது. .

கடைசியாக, கோப்பு திறக்கும் முறைகள் முக்கிய பங்கு வகிக்கின்றன. சி இல், ஒரு கோப்பைத் திறக்கவும் "w" பயன்முறை இருக்கும் உள்ளடக்கத்தை மேலெழுதும் "a" பயன்முறை அதைச் சேர்க்கிறது. ஒரு கோப்பு தற்செயலாக பைனரி பயன்முறையில் திறக்கப்பட்டால் ("wb" அதற்கு பதிலாக "w"), வெளியீடு படிக்க முடியாத எழுத்துக்களாக தோன்றக்கூடும். உரை கோப்புகளை கையாளும் போது, ​​எதிர்பாராத வடிவமைப்பு சிக்கல்களைத் தவிர்க்க சரியான பயன்முறையைப் பயன்படுத்தவும், உங்கள் உரை திருத்தியில் கோப்பு குறியாக்கத்தை சரிபார்க்கவும் எப்போதும் பரிந்துரைக்கப்படுகிறது.

சி இல் கோப்பு கையாளுதல் சிக்கல்கள் குறித்த பொதுவான கேள்விகள்

  1. எனது கோப்பில் உரைக்கு பதிலாக படிக்க முடியாத சின்னங்கள் ஏன் உள்ளன?
  2. தவறான குறியாக்கம் அல்லது கோப்பு சுட்டிகள் முறையற்ற கையாளுதல் காரணமாக இது பொதுவாக நிகழ்கிறது. உடன் கோப்பை உரை பயன்முறையில் திறப்பதை உறுதிசெய்க "r" அல்லது "w", உங்கள் உரை எடிட்டர் யுடிஎஃப் -8 குறியாக்கத்தைப் பயன்படுத்துகிறதா என்பதை சரிபார்க்கவும்.
  3. ஒரு கோப்பில் எழுதும்போது தரவு ஊழலை எவ்வாறு தடுப்பது?
  4. பயன்படுத்தி எப்போதும் கோப்பை மூடு fclose எழுதிய பிறகு. கூடுதலாக, பயன்படுத்தவும் fflush அனைத்து தரவுகளும் சரியாக சேமிக்கப்படுவதை உறுதிசெய்ய மூடுவதற்கு முன்.
  5. பிழைகளைத் தவிர்க்க நான் ஒரு கோப்பு வரியை வரி மூலம் படிக்கலாமா?
  6. ஆம்! பயன்படுத்துகிறது fgets ஒரு உள்ளே a while இடையக வழிதல் சிக்கல்கள் இல்லாமல் அனைத்து வரிகளும் பாதுகாப்பாக வாசிக்கப்படுவதை லூப் உறுதி செய்கிறது.
  7. எனது நிரலை இயக்கிய பிறகு எனது கோப்பு ஏன் காலியாக உள்ளது?
  8. உடன் ஒரு கோப்பைத் திறக்கிறது "w" பயன்முறை எழுதுவதற்கு முன் அதன் உள்ளடக்கங்களை அழிக்கிறது. ஏற்கனவே உள்ள உள்ளடக்கத்தை அழிக்காமல் தரவைச் சேர்க்க விரும்பினால், பயன்படுத்தவும் "a" பயன்முறை.
  9. ஒரு கோப்பு வெற்றிகரமாக திறக்கப்பட்டதா என்பதை சரிபார்க்க ஒரு வழி இருக்கிறதா?
  10. ஆம்! கோப்பு சுட்டிக்காட்டி இருந்தால் எப்போதும் சரிபார்க்கவும் அழைத்த பிறகு fopen. அது இருந்தால் , கோப்பு சரியாக திறக்கப்படவில்லை, அதற்கேற்ப பிழையை நீங்கள் கையாள வேண்டும்.

துல்லியமான வெளியீட்டிற்கான சரியான கோப்பு கையாளுதலை உறுதி செய்தல்

சி இல் கோப்புகளை எழுதுவது மற்றும் வாசிப்பது விவரங்களுக்கு கவனமாக கவனம் செலுத்த வேண்டும். ஒரு கோப்பை மீண்டும் திறப்பதற்கு முன்பு அதை மூடத் தவறியது அல்லது தவறான கோப்பு முறைகளைப் பயன்படுத்துவது போன்ற எளிய தவறுகள் எதிர்பாராத சின்னங்கள் அல்லது சிதைந்த உரைக்கு வழிவகுக்கும். தரவு சுட்டிகள் சரியாகக் கையாளுதல் மற்றும் தரவு ஒருமைப்பாட்டை பராமரிக்க பிழைகளைச் சரிபார்ப்பது அவசியம்.

கோப்பு அணுகலை சரிபார்ப்பது மற்றும் சரியான குறியாக்கத்தைப் பயன்படுத்துதல் போன்ற சிறந்த நடைமுறைகளைப் பயன்படுத்துவதன் மூலம், டெவலப்பர்கள் வெறுப்பூட்டும் சிக்கல்களைத் தவிர்க்கலாம். பதிவுகளைச் சேமிப்பது அல்லது தரவை செயலாக்குவது, உரை சரியாக எழுதப்பட்டிருப்பதை உறுதிசெய்து, படிப்பது மிகவும் நம்பகமான நிரல்களுக்கு வழிவகுக்கும். மாஸ்டரிங் கோப்பு I/O ஒவ்வொரு சி புரோகிராமருக்கும் ஒரு அடிப்படை திறமை. .

நம்பகமான ஆதாரங்கள் மற்றும் குறிப்புகள்
  1. C இல் கோப்பு கையாளுதல் செயல்பாடுகளில் விரிவான ஆவணங்கள் அதிகாரப்பூர்வ குனு சி நூலகத்தில் காணலாம்: குனு சி நூலகம் - கோப்பு நீரோடைகள் .
  2. உரை குறியாக்க சிக்கல்கள் மற்றும் அவை கோப்பு எழுத்தை எவ்வாறு பாதிக்கின்றன என்பதைப் பற்றிய ஆழமான புரிதலுக்கு, யூனிகோட் மற்றும் கோப்பு கையாளுதல் குறித்த இந்த கட்டுரையைப் பார்க்கவும்: மென்பொருளில் ஜோயல் - யூனிகோட் மற்றும் எழுத்து தொகுப்புகள் .
  3. முறையற்ற கோப்பு கையாளுதல் உட்பட சி நிரலாக்கத்தில் பொதுவான தவறுகள் இந்த கல்வி வளத்தில் விவாதிக்கப்பட்டுள்ளன: கற்றல் -C.org - கோப்பு கையாளுதல் .
  4. கோப்புகளை மூடுவதன் முக்கியத்துவம் மற்றும் சுட்டிக்காட்டி சிக்கல்களைத் தவிர்ப்பது இந்த அடுக்கு வழிதல் விவாதத்தில் விளக்கப்பட்டுள்ளது: அடுக்கு வழிதல் - FCLOSE ஐ ஏன் பயன்படுத்த வேண்டும்? .