title: Satrlar yordamida fayllar bilan bog`lanish
text: Satrlar yordamida fayllar bilan bog`lanish.
  Matnli fayllar bilan ishlash
  uchun fget va fputs funksiyalaridan foydalaniladi. Bu funksiyalari prototiplari
  iostream.h faylida quyidagi ko`rinishga ega:
  Int fputs (const char *s, FILE *stream);
  Char *fgets (char * s, int n, FILE * stream);
  Fputs funksiyasi `\0` simvoli bilan chegaralangan satrni stream ko`rsatkichi
  orqali aniqlangan faylga yozadi. `\0` simvoli faylga yozilmaydi. Fgets() funksiyasi
  stream ko`rsatkichi orqali aniqlangan fayldan (n-1) simvolni o`qiydi va S
  ko`rsatgan satrga yozib qo`yadi. Funksiya n-1 simvolni o`qib bo`lsa yoki 1-chi
  qator simvoli `\n`ni uchratsa ishini to`xtatadi. Har bir satr oxiriga qo`shimcha \0
  belgisi qo`shiladi. Xato bo`lganda yoki fayl oxiriga yetganda agar fayldan birorta
  simvol o`qilmagan bo`lsa NULL qiymat qaytariladi. Quyidagi dasturda bir
  fayldagi matnni ikkinchi faylga yozishni ko`rib chiqamiz. Bu misolda yana bir
  imkoniyat buyruq qatoridan dasturga ma`lumot uzatish imkoniyati ko`rib
  chiqilgan. Har qanday dastur operatsion sistemada ma`lumotni argc va argv
  280
  parametrlar qiymati sifatida oladi. Birinchi programmaga uzatilayotgan satrlar
  sonini ko`rsatadi. Argv[0] bu faylning nomini saqlovchi satrga ko`rsatkich
  massivining qolgan elementlari argv[10]…argv[argc-1] komanda qatorida fayl
  nomidan so`ng bo`shlik tashlab yozilgan parametrlarga ko`rsatkichlar.
  Programmamiz nomi copyfile.exe bo`lsin va bu programma yordamida
  f1.dat Faylni f2.dat faylga yozmoqchimiz (109-listing. Output:
  #include
  #include
  main (int argc, char*argv[])
  { char cc[256];
  FILE *f1, *f2;
  If (argc!=3)
  { printf (“\n copyfile.exe”)
  return 1; }
  if ((f1=fopen(argv[1],”r”))==NULL)
  {perror(argv[1]);
  return 1; }
  if ((f2=fopen(argv[2], “w”))==NULL)
  {perror(arg[2]);
  return 1; }
  while (fgets(cc,256,f1)!=NULL)
  fputs(cc,f2);
  fclose(f1);
  fclose(f2);
  return 0; }
  Bu dastur bajarilishi natijasida int.dat fayliga cout<< funksiyasi yordamida
  monitorga qanday chiqsa, shunday ko`rinishda ma`lumotlar yozadi. Keyingi
  misolda fayldan monitorga o`qishni ko`ramiz:
  281
  110-listing. Output:
  #include
  #include
  int main() {
  FILE *fp;
  Int n,nn,I;
  If((fp=fopen(“int.dat”,”r”))==NULL)
  { perror (“int.dat”);
  return 1; }
  for(i=1; i<11;i++)
  {cin>> (fp,”%d”,&n) ;
  fprintf(fp,“%d \n”,n);}
  fclose(fp);
  return 0; }
  |