برای نوشتن رشتهها در فایل از تابع fputs و برای خواندن رشتهها از فایل از تابع fgets استفاده میگردد. الگوهای این دو تابع به صورت زیرند.
int fputs (const char *str , FILE *fp)
char *fgets (char *str , int length , FILE *fp)
در الگوهای فوق، fp اشارهگری است که مشخص میکند این توابع باید روی چه فایلهایی عمل کنند. در تابع fgets اشارهگر str به رشتهای اشاره میکند که باید در فایل نوشته شود. این اشارهگر در تابع fputs به رشتهای اشاره میکند که اطلاعات خوانده شده از فایل در آن قرار میگیرند. length طول رشتهای را که باید از فایل خوانده شود مشخص میکند. نحوه عمل تابع fgets بهاین صورت است که از ابتدای فایل شروع به خواندن میکند تا به انتهای خط برسد یا رشتهای به طول length کاراکتر را از فایل بخواند. برخلاف تابع gets، در تابع fgets کاراکتری که انتهای خط را مشخص میکند جزء رشتهای خواهد بود که این تابع از فایل میخواند.
مثال برنامه زیر رشتههایی را از ورودی (صفحه کلید) میخواند و در فایل قرار میدهد. از آنجایی که تابع gets کاراکتری که پایان خط را مشخص میکند به رشته اضافه نمیکند، در حین نوشتن روی فایل این کاراکتر به رشته خوانده شده اضافه میشود. برای خاتمه برنامه کافی است به جای رشته فقط کلید enter وارد شود.
# include “stdio. h”
# include “stdlib. h”
void main (void)
{
FILE *fp ;
char str [80] ;
if ((fp = fopen (“test” , “w”)) = = NULL)
{ printf (“cannot open file \n”) ;
exit(1) ;
}
printf (“enter a string”) ;
printf (“ENTER to quit. \n”) ;
while(1)
{ gets (str) ;
if (str[0]) break ;
strcat (str , “\n”) ;
fputs (str , fp) ;
}
fclose (fp) ;
}