Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

6.3 Ανάγνωση αρχείων στην C

Στο προηγούμενο κεφάλαιο, γράψαμε σε ένα αρχείο χρησιμοποιώντας τις λειτουργίες w και a στη συνάρτηση fopen().

Για να διαβάσετε από ένα αρχείο, μπορείτε να χρησιμοποιήσετε τη λειτουργία r:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
FILE *fptr;
char c;
fptr = fopen("file.txt", "r");
while ((c = fgetc(fptr)) != EOF) {
printf("%c", c);
}
fclose(fptr);
return 0;
}
#include <stdio.h> int main() { FILE *fptr; char c; fptr = fopen("file.txt", "r"); while ((c = fgetc(fptr)) != EOF) { printf("%c", c); } fclose(fptr); return 0; }
#include <stdio.h>

int main() {
    FILE *fptr;
    char c;

    fptr = fopen("file.txt", "r");

    while ((c = fgetc(fptr)) != EOF) {
        printf("%c", c);
    }

    fclose(fptr);

    return 0;
}

Σε αυτό το παράδειγμα, χρησιμοποιούμε τη συνάρτηση fopen() για να ανοίξουμε το αρχείο "file.txt" σε λειτουργία ανάγνωσης ("r"). Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση fgetc() για να διαβάσουμε το αρχείο χαρακτήρα-χαρακτήρα. Χρησιμοποιούμε τη συνθήκη while για να συνεχίσουμε την ανάγνωση του αρχείου όσο δεν έχουμε φτάσει στο τέλος του. Κάθε φορά που διαβάζουμε έναν χαρακτήρα, τον εκτυπώνουμε με τη συνάρτηση printf(). Τέλος, κλείνουμε το αρχείο με τη συνάρτηση fclose().

Στη συνέχεια, πρέπει να δημιουργήσουμε ένα string που να είναι αρκετά μεγάλο για να μπορεί να αποθηκεύσει το περιεχόμενο του αρχείου.

Για παράδειγμα, ας δημιουργήσουμε ένα string που μπορεί να αποθηκεύσει έως 100 χαρακτήρες:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
FILE *fptr;
char str[100];
fptr = fopen("file.txt", "r");
fgets(str, 100, fptr);
printf("%s", str);
fclose(fptr);
return 0;
}
#include <stdio.h> int main() { FILE *fptr; char str[100]; fptr = fopen("file.txt", "r"); fgets(str, 100, fptr); printf("%s", str); fclose(fptr); return 0; }
#include <stdio.h>

int main() {
    FILE *fptr;
    char str[100];

    fptr = fopen("file.txt", "r");

    fgets(str, 100, fptr);

    printf("%s", str);

    fclose(fptr);

    return 0;
}

Σε αυτό το παράδειγμα, έχουμε δημιουργήσει έναν πίνακα χαρακτήρων str με μέγεθος 100. Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση fgets() για να διαβάσουμε τα πρώτα 99 χαρακτήρες από το αρχείο "file.txt" και να τα αποθηκεύσουμε στον πίνακα str. Το τρίτο όρισμα της συνάρτησης fgets() καθορίζει τον μέγιστο αριθμό χαρακτήρων που πρέπει να διαβαστούν από το αρχείο. Τέλος, εκτυπώνουμε το περιεχόμενο του πίνακα str με τη συνάρτηση printf() και κλείνουμε το αρχείο με τη συνάρτηση fclose().

[adinserter block=”2″]

Για να διαβάσετε κάθε γραμμή του αρχείου, μπορείτε να χρησιμοποιήσετε ένα βρόχο while:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
FILE *fptr;
char str[100];
fptr = fopen("file.txt", "r");
while (fgets(str, 100, fptr) != NULL) {
printf("%s", str);
}
fclose(fptr);
return 0;
}
#include <stdio.h> int main() { FILE *fptr; char str[100]; fptr = fopen("file.txt", "r"); while (fgets(str, 100, fptr) != NULL) { printf("%s", str); } fclose(fptr); return 0; }
#include <stdio.h>

int main() {
    FILE *fptr;
    char str[100];

    fptr = fopen("file.txt", "r");

    while (fgets(str, 100, fptr) != NULL) {
        printf("%s", str);
    }

    fclose(fptr);

    return 0;
}

Σε αυτό το παράδειγμα, χρησιμοποιούμε τη συνάρτηση fgets() εντός της συνθήκης while για να διαβάσουμε κάθε γραμμή του αρχείου "file.txt". Η συνάρτηση fgets() επιστρέφει την επόμενη γραμμή του αρχείου και επιστρέφει την τιμή NULL όταν φτάσει στο τέλος του αρχείου. Εκτυπώνουμε κάθε γραμμή που διαβάζουμε με τη συνάρτηση printf(). Τέλος, κλείνουμε το αρχείο με τη συνάρτηση fclose().

Εάν προσπαθήσετε να ανοίξετε ένα αρχείο για ανάγνωση που δεν υπάρχει, η συνάρτηση fopen() θα επιστρέψει την τιμή NULL.

Σαν καλή πρακτική, μπορούμε να χρησιμοποιήσουμε μια δομή if για να ελέγξουμε αν η τιμή της συνάρτησης επιστρέφει την τιμή NULL και να εκτυπώσουμε κάποιο κείμενο αντί αυτού (όταν το αρχείο δεν υπάρχει):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
FILE *fptr;
char str[100];
fptr = fopen("nonexistent.txt", "r");
if (fptr == NULL) {
printf("Unable to open file.\n");
return 1;
}
while (fgets(str, 100, fptr) != NULL) {
printf("%s", str);
}
fclose(fptr);
return 0;
}
#include <stdio.h> int main() { FILE *fptr; char str[100]; fptr = fopen("nonexistent.txt", "r"); if (fptr == NULL) { printf("Unable to open file.\n"); return 1; } while (fgets(str, 100, fptr) != NULL) { printf("%s", str); } fclose(fptr); return 0; }
#include <stdio.h>

int main() {
    FILE *fptr;
    char str[100];

    fptr = fopen("nonexistent.txt", "r");

    if (fptr == NULL) {
        printf("Unable to open file.\n");
        return 1;
    }

    while (fgets(str, 100, fptr) != NULL) {
        printf("%s", str);
    }

    fclose(fptr);

    return 0;
}

Σε αυτό το παράδειγμα, έχουμε προσθέσει έναν έλεγχο με μια δομή if για να ελέγξουμε αν η συνάρτηση fopen() επιστρέφει την τιμή NULL. Εάν αυτό συμβαίνει, τυπώνουμε το κείμενο "Unable to open file." και επιστρέφουμε την τιμή 1 για να δείξουμε ότι κάτι δεν πήγε καλά. Εάν το αρχείο ανοίγει με επιτυχία, διαβάζουμε το περιεχόμενό του και εκτυπώνουμε τις γραμμές, όπως κάναμε και προηγουμένως. Τέλος, κλείνουμε το αρχείο με τη συνάρτηση fclose().

[adinserter block=”3″]

Με αυτό κατά νου, μπορούμε να δημιουργήσουμε έναν πιο βιώσιμο κώδικα εάν χρησιμοποιήσουμε ξανά το παράδειγμα μας “ανάγνωσης αρχείου” παραπάνω:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
FILE *fptr;
char str[100];
char filename[20];
printf("Enter the filename: ");
scanf("%s", filename);
fptr = fopen(filename, "r");
if (fptr == NULL) {
printf("Unable to open file.\n");
return 1;
}
while (fgets(str, 100, fptr) != NULL) {
printf("%s", str);
}
fclose(fptr);
return 0;
}
#include <stdio.h> int main() { FILE *fptr; char str[100]; char filename[20]; printf("Enter the filename: "); scanf("%s", filename); fptr = fopen(filename, "r"); if (fptr == NULL) { printf("Unable to open file.\n"); return 1; } while (fgets(str, 100, fptr) != NULL) { printf("%s", str); } fclose(fptr); return 0; }
#include <stdio.h>

int main() {
    FILE *fptr;
    char str[100];
    char filename[20];

    printf("Enter the filename: ");
    scanf("%s", filename);

    fptr = fopen(filename, "r");

    if (fptr == NULL) {
        printf("Unable to open file.\n");
        return 1;
    }

    while (fgets(str, 100, fptr) != NULL) {
        printf("%s", str);
    }

    fclose(fptr);

    return 0;
}

Σε αυτό το παράδειγμα, ζητάμε από τον χρήστη να εισαγάγει το όνομα του αρχείου που θέλει να διαβάσει. Αυτό επιτυγχάνεται χρησιμοποιώντας τη συνάρτηση scanf(), όπως φαίνεται στο παράδειγμα. Έπειτα, ελέγχουμε αν η συνάρτηση fopen() επιστρέφει την τιμή NULL και εκτυπώνουμε το κατάλληλο μήνυμα αντί για το περιεχόμενο του αρχείου, εάν αυτό δεν είναι δυνατόν. Εάν το αρχείο ανοίγει με επιτυχία, διαβάζουμε το περιεχόμενό του και εκτυπώνουμε τις γραμμές, όπως κάναμε και προηγουμένως. Τέλος, κλείνουμε το αρχείο με τη συνάρτηση fclose().

Δωρεα μεσω Paypal

Για την κάλυψη αναγκών φιλοξενίας και δημιουργίας περιεχομένου.

κατηγοριες μαθηματων

Ιστορικο ενοτητων

top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων