C Читати файли
Прочитати файл
У попередньому розділі ми записували файл у режимах w
і a
всередині функції fopen()
.
Щоб читати файл, ви можете використовувати режим r
:
Приклад
FILE *fptr;
// Open a file in read mode
fptr = fopen("filename.txt", "r");
Це зробить filename.txt
відкритим для читання.
Щоб прочитати файл на C, потрібно трохи попрацювати. Тримайтеся! Ми допоможемо вам крок за кроком.
Далі нам потрібно створити рядок, який має бути достатньо великим, щоб зберегти вміст файлу.
Наприклад, давайте створимо рядок, який може зберігати до 100 символів:
Приклад
FILE *fptr;
// Відкрийте файл у режимі читання
fptr = fopen("filename.txt", "r");
// Зберігайте вміст файлу
char myString[100];
Щоб прочитати вміст filename.txt
, ми можемо використати функцію fgets()
.
Функція fgets()
приймає три параметри:
Приклад
fgets(myString, 100, fptr);
- Перший параметр визначає, де зберігати вміст файлу, який буде в щойно створеному масиві
myString
. - Другий параметр визначає максимальний розмір даних для читання, який має відповідати розміру
myString
(100
). - Для третього параметра потрібен покажчик на файл, який використовується для читання файлу (
fptr
у нашому прикладі).
Тепер ми можемо надрукувати рядок, який виведе вміст файлу:
Приклад
FILE *fptr;
// Відкрийте файл у режимі читання
fptr = fopen("filename.txt", "r");
// Зберігайте вміст файлу
char myString[100];
// Прочитайте вміст і збережіть його всередині myString
fgets(myString, 100, fptr);
// Роздрукуйте вміст файлу
printf("%s", myString);
// Закрийте файл
fclose(fptr);
Hello World!
Примітка: Функція fgets
читає лише перший рядок файлу. Якщо ви пам’ятаєте, там було два рядки тексту filename.txt
.
Щоб прочитати кожен рядок файлу, ви можете використати цикл while
:
Приклад
FILE *fptr;
// Відкрийте файл у режимі читання
fptr = fopen("filename.txt", "r");
// Зберегти вміст файлу
char myString[100];
// Прочитайте вміст і роздрукуйте його
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// Закрити файл
fclose(fptr);
Hello World!
Hi everybody!
Гарна практика
Якщо ви спробуєте відкрити файл для читання, якого не існує, функція fopen()
поверне NULL
.
Порада: Як хорошу практику ми можемо використовувати інструкцію if
для перевірки NULL
, і замість цього надрукувати текст (якщо файл не існує):
Приклад
FILE *fptr;
// Відкрийте файл у режимі читання
fptr = fopen("loremipsum.txt", "r");
// Надрукуйте текст, якщо файл не існує
if(fptr == NULL) {
printf("Неможливо відкрити файл.");
}
// Закрити файл
fclose(fptr);
Якщо файл не існує, друкується наступний текст:
Неможливо відкрити файл
Пам’ятаючи про це, ми можемо створити більш стійкий код, якщо знову використаємо наш приклад "прочитати файл" вище:
Приклад
Якщо файл існує, прочитайте вміст і роздрукуйте його. Якщо файл не існує, надрукуйте повідомлення:
FILE *fptr;
// Відкрийте файл у режимі читання
fptr = fopen("filename.txt", "r");
// Зберігайте вміст файлу
char myString[100];
// Якщо файл існує
if(fptr != NULL) {
// Прочитайте вміст і роздрукуйте його
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// Якщо файл не існує
} else {
printf("Неможливо відкрити файл.");
}
// Закрити файл
fclose(fptr);
Hello World!
Hi everybody!