خواندن فایل (Read Files)
برای «خواندن فایل (Read)» در C، فایل را با حالت r باز می کنیم. «حالت (Mode)» یعنی نوع دسترسی؛ شبیه انتخاب فقط-خواندن در یک برنامه.
باز کردن فایل با حالت r
اول باید فایل را باز کنیم. سپس یک اشاره گر فایل داشته باشیم.
#include <stdio.h>
int main() {
FILE *fptr;
fptr = fopen("filename.txt", "r");
return 0;
}
خواندن یک خط با fgets()
تابع «fgets» یک خط می خواند. «بافر (Buffer)» یعنی محفظه ی متن.
#include <stdio.h>
int main() {
FILE *fptr;
char myString[100];
fptr = fopen("filename.txt", "r");
fgets(myString, 100, fptr);
printf("%s", myString);
fclose(fptr);
return 0;
}
خواندن همه ی خطوط با while
با «حلقه while» تا آخر فایل می خوانیم. هر بار یک خط.
#include <stdio.h>
int main() {
FILE *fptr;
char myString[100];
fptr = fopen("filename.txt", "r");
while (fgets(myString, 100, fptr)) {
printf("%s", myString);
}
fclose(fptr);
return 0;
}
بررسی خطا: فایل وجود ندارد؟
اگر فایل نبود، «fopen» مقدار «NULL» می دهد. باید چک کنیم.
#include <stdio.h>
int main() {
FILE *fptr;
fptr = fopen("loremipsum.txt", "r");
if (fptr == NULL) {
printf("Not able to open the file.");
}
fclose(fptr);
return 0;
}
نمونه پایدار: هم چک، هم خواندن
این نسخه اگر فایل بود می خواند؛ نبود، پیام می دهد.
#include <stdio.h>
int main() {
FILE *fptr;
char myString[100];
fptr = fopen("filename.txt", "r");
if (fptr != NULL) {
while (fgets(myString, 100, fptr)) {
printf("%s", myString);
}
} else {
printf("Not able to open the file.");
}
fclose(fptr);
return 0;
}
گام های عملی
- یک
FILE*بساز. - فایل را با
rباز کن. - یک بافر مثل
char myString[100]آماده کن. - با
fgets()بخوان و چاپ کن. - همیشه در پایان
fclose()بزن.
نکته: اگر متن طولانی است، اندازه ی بافر را بیشتر بگیر. همچنین برای نوشتن، صفحه نوشتن در فایل را ببین. برای ایجاد فایل، ایجاد فایل را باز کن. سپس برای ساختارها، به struct ها برو.
جمع بندی سریع
- حالت
rفقط خواندن است. fgets()هر بار یک خط می خواند.- برای همه ی خطوط، از
whileاستفاده کن. NULLیعنی فایل باز نشد.fclose()را هر بار فراموش نکن.