Лекция Файлдармен жұмыс істеу Сұрақтар: Файлдардан мәлімет енгізу/ шығару Файлдарда қолданылатын функциялар Мысалдар



жүктеу 22,08 Kb.
Дата29.05.2018
өлшемі22,08 Kb.
#18290
түріЛекция
  • 12 лекция
  • Файлдармен
  • жұмыс істеу
  • Сұрақтар:
  • Файлдардан мәлімет енгізу/ шығару
  • 2. Файлдарда қолданылатын функциялар
  • 3. Мысалдар

1. Файлдардан мәлімет енгізу/шығару

  • Сыртқы мәліметтер ағынымен (поток данных) жұмыс істеу үшін оны ашу керек. Сонда сыртқы мәліметтер программадағы алдын ала анықталған FILE типімен байланыстырылады. Бұл типтің анық-талуы stdio.h тақырыптық файлы арқылы атқары-лады. FILE типі арқылы мәліметтер ішіндегі позиция-ларға нұсқауыш, буферге нұсқауыш көрсетіле алады.
  • Сыртқы мәліметтер ағынына нұсқауыш, мысалы, fp программада былай сипатталады:
  • #include
  • FILE *fp;
  • Осы fp нұсқауышы ағынды ашатын fopen функциясы арқылы мән қабылдай бастайды.
  • 2. Файлдарда қолданылатын функциялар
  • 1) Файл ашу үшін fopen функциясы қажет:
  • fp = fopen(name,mode)
  • мұндағы fp – файлға сілтейтін нұсқауыш; name – сыртқы мәліметтер жазылған немесе жазылатын файл аты, иденти-фикатор; mode – файлдың қандай режимде ашылатынын төмендегідей түрде көрсетеді:
  • "r" – бұрыннан бар файлды оқу үшін ашу;
  • "w" – бос файлды мәлімет жазу үшін ашу;
  • "a" – файл соңына мәлімет қосып жазу үшін оны ашу;
  • "r+"– файлды одан мәлімет оқу және жазу үшін ашу;
  • "w+"– бос файлдан мәлімет оқу және оған мәлімет жазу
  • үшін файл ашу (бұрын файл болса, ол өшіріледі);
  • "a+"– файлдан мәлімет оқу және оның соңына мәлімет
  • қосып жазу үшін ашу).
  • Кейбір компиляторларда мәтінмен жұмыс істеу кезінде “t” әрпі қолданылады, мысалы, мәтін жазу/оқу “at” не “rt” болып көрсетіледі.
  • Ал “+” таңбасы мәлімет жазу және оқу режимдерінің қатар атқарылатынын көрсетеді.
  • Файл ашылар кезде қате туындауы мүмкін. Мысалы, файл табылмады немесе дискетке мәлімет жазуға рұқсат жоқ, т.б. Осындай жағдайларда файл нұсқауышы NULL мәнін қабыл-дайды. Сондықтан қате болғанын анықтайтын мынадай опера-торлар тізбегі жиі қолданылады:
  • if ((fp=fopen(fname,“w")) = = NULL)
  • {printf("\n файлды ашуда қате шықты");
  • getch();
  • return(0);
  • }
  • Ашылған файл сеанс соңында fclose() функциясы арқылы жабылуы тиіс.
  • 2)fclose(fp) функциясы ашық файлды жабады.
  • 3)feof(fp) функциясы файл соңын анықтайды.
  • 4)fgets(fp) функциясы файлдан бір символ оқиды.
  • 5)fputc(fp) функциясы файлға бір символ жазады.
  • 6)ferror(fp) функциясы файлға жазу/оқу кезінде қате шыққанын тексереді.
  • Бұлардағы fp – файлға сілтейтін нұсқауыш;
  • 7-8) Файлға мәлімет жазу/оқу үшін fprintf және fscanf функциялары пайдаланылады.
  • fprintf - файлға мәлімет жазу үшін, ал fscanf – файлдан мәлімет оқу үшін қолданылады. Олардың жалпы жазылу түрі:
  • fprintf(fp,“спецификация шаблоны”, p);
  • p - өрнек;
  • Файлға сілтейтін нұсқауыш былай сипатталады:
  • FILE *fp;
  • fscanf(fp,“спецификация шаблоны”,адрес);
  • Мысал: Бүтін сандар тізбегін (n = 5) пернелерден енгізіп, оларды файлға жазу керек болсын делік.
  • Мұның программасы:
  • //number.txt файлын ашып, соған 5 бүтін сан жазу
  • #include
  • #include
  • main()
  • {int k,i,n=5;
  • char fname[]=“a:\\number.txt";
  • clrscr();
  • FILE *fp;
  • fp = fopen(fname,"w");
  • clrscr();
  • printf(“Бүтін сандар %s файлына жазылады\n",
  • fname);
  • puts(“Әр санды енгізіп, Enter басыңыз\n");
  •   for(i=0; i
  • {scanf("%i",&k);
  • fprintf(fp,"%d ",k); }
  •   fclose(fp);
  • printf(“Енгізілген сандар %s файлына
  • жазылды\n",fname);
  • getch();
  • }
  • Нәтижесі:
  • Бүтін сандар a:\num.txt файлына жазылады
  • Әр санды енгізіп, Enter басыңыз
  • 1
  • 2
  • 3
  • 4
  • 5
  • Енгізілген сандар a:\num.txt файлына жазылды
  • 9-10) fgets және fputs функциялары сөз тіркестері-мен жұмыс істегенде пайдаланылады, олардың прото-типтері де stdio.h файлында жазылады.
  • fgets функциясының жазылуы:
  • fgets(str,n,fp);
  • мұнда fp нұсқауышы көрсетіп тұрған файлдан ұзынды-ғы n–нен аспайтын символдар тіркесі оқылады да, олар-ды str көрсетіп тұрған тіркеске жазады;
  • str – сөз тіркесіне нұсқауыш (компьютер жадындағы орынға сілтейтін нұсқауыш);
  • n – оқылатын тіркестің максимал ұзындығы;
  • fp – файл нұсқауышы.
  • Мысалы, fgets(st,256,fp); немесе
  •  #define L 20
  • main()
  • {
  • FILE *fp;
  • char *st[n];
  • fp=fopen(“stroka”,”r”);
  • while(fgets(st,L,fp)!=NULL)
  • puts (st);
  • }
  • Файлдарға сөз тіркестерін жазу үшін fputs функциясы келесі түрде қолданылады, мысалы:
  • fputs(st,fp)
  • мұндағы st – сөз тіркесі нұсқауышы; fp - файл нұсқауышы. Бұл функция ‘\0’ символымен шектелген тіркесті (st көрсетіп тұрған) fp нұсқап тұрған файлға жазады.
  • #include //алдыңғы файл соңына 5 сан қосу
  • #include
  • #include
  •  main()
  • { int i,k=0,s=0,n=5,y,x;
  • char fname[]="a:\\number.txt";
  • clrscr();
  • FILE *fp;
  • fp=fopen(fname,"at");
  •   if ((fp=fopen(fname,"at")) == NULL)
  • { printf("\n файлды ашуда қате шықты");
  • getch(); return(0);
  • }
  •   puts("Enter басу арқылы 5 сан енгізіңіз:");
  •   for(i=1; i<=n;i++)
  • {scanf("%i",&x);
  • fprintf(fp,"%d ",x);}
  • fclose(fp);
  • puts(“Орындалды");
  • getch();
  • }
  • 3. Мысалдар
  • #include // a:\file1.txt файлын оқып,
  • #include // ондағы сөздерді экранға шығару
  •  main()
  • { int i,n;
  • char fname[]=“a:\\file1.txt", st[80];
  • FILE *fp;
  • fp=fopen(fname,"r");
  • clrscr();
  • printf("\n%s файлының мәліметі\n",fname);
  • puts("--------------------------------");
  • // мәтін (t) оқу үшін (r) файлды ашу
  • if ((fp=fopen(fname,"r")) = = NULL)
  • { printf("\nоқу үшін файл ашылмады");
  • getch();
  • return(0);
  • }
  • while (!feof(fp))
  • { fgets(st,80,fp);
  • puts(st);
  • }
  • fclose(fp);
  • puts("-------------------------------");
  • printf(“Аяқтау үшін Enter басыңыз");
  • getch();
  • }
  • Нәтижесі:
  • file1.txt файлының мәліметі
  • -----------------------------------
  • My name is Azat.
  • -----------------------------------
  • Аяқтау үшін Enter басыңыз
  •  
  • Енді осы файлға бір-екі сөз қосайық.
  •  
  • /* a:\file1.txt файлынан мәлімет оқып, оны экранға шығарып, соңына мәлімет қосу */
  • #include
  • #include
  • #include
  •  main()
  • { int i,n;
  • char fname[]=“a:\\file1.txt", st[80],fam[15],name[15];
  • FILE *fp;
  • fp=fopen(fname,"r");
  • clrscr();
  •   printf("\n%s файлындағы мәлімет\n",fname);
  • puts("-------------------------------");
  • //мәтін (t) оқу (r) үшін файл ашу
  • if ((fp=fopen(fname,"r")) == NULL)
  • {printf("\nфайлды оқу кезінде қате болды");
  • getch();
  • return(0);
  • }
  • while (!feof(fp))
  • { fgets(st,80,fp); puts(st); }
  • fclose(fp);
  • puts("-------------------------------");
  •   //мәтін (t) қосып жазу (а+) үшін файл ашу
  • if ((fp=fopen(fname,"a+")) == NULL)
  • {printf("\nфайлға жазу кезінде қате болды");
  • getch();
  • return(0);
  • }
  • puts("\nфайлға мәтін қосу");
  • puts(“Фамилиясы:"); scanf("%s",&fam);
  • puts(“Аты:"); scanf("%s",&name);
  • //файлға жазу
  • strcat(fam," ");
  • strcat(fam,name);
  • strcat(st,“My name is ”);
  • strcat(st,fam);
  • fputs(st,fp);
  • fclose(fp);
  • printf(“Аяқтау үшін Enter басыңыз");
  • getch();
  • }
  • /*вычислить ср. aрифм. чисел, введенных с клавиш,и записать в файл, затем сосчитать с файла a:\number2.txt */
  • #include
  • #include
  • #define FNAME "a:\\number2.txt"
  • main()
  • { int i,k,s=0,x,n=10;
  • char st[80];
  • FILE *fp;clrscr();
  • fp=fopen(FNAME,"w");
  • printf(“Ввод 10 чисел:\n");
  • for(i=0; i
  • { scanf("%d",&x);
  • fprintf(fp,"%d ",x);
  • s+=x;
  • }
  • fprintf(fp,"%6.2f",(float)s/n);
  • fclose(fp);
  •  
  • printf("\n");
  • fp=fopen(FNAME,"rt");
  •   while(!feof(fp))
  • { fscanf(fp,"%s",&st);
  • printf("%s ",st);
  • }
  • fclose(fp);
  • getch();
  • }
  • /* среднее чисел в файле a:\number1.txt */
  • #include
  • #include
  • #define FNAME "a:\\number1.txt"
  •  main()
  • { char fname[20]=FNAME;
  • FILE *fp;
  • int a,n=0,sum=0;
  • float sr;
  • clrscr();
  •   printf("\n среднее чисел в файле %s\n",FNAME);
  • if ((fp=fopen(fname,"rt")) == NULL)
  • { printf("\nОшибка открытия файла");
  • getch(); return;
  • }
  •  
  • while (!feof(fp))
  • { fscanf(fp,"%i",&a);
  • sum+=a; n++;
  • }
  • fclose(fp);
  • sr=(float)sum/n;
  • printf(“Введено чисел: %i\n",n);
  • printf(“Сумма чисел: %i\n",sum);
  • printf(“Среднее арифметическое %3.2f\n",sr);
  • puts(“Для завершения нажмите Enter");
  • getch();
  • }
  • /*Сосчитать файл и вывести его на экран */
  • #include
  • #include
  • #include
  • #define L 40
  • main()
  • { char st[40];
  • FILE *fp;
  • fp=fopen("stroka.txt","r");
  • clrscr();
  •  
  • while(fgets(st,L,fp)!=NULL)
  • puts(st);
  • fclose(fp);
  • getch();
  • }
  • /* a:\file.txt файлына мәтін жазу */
  • #include
  • #include
  • #include
  • main()
  • { int i,n;
  • char fname[]="a:\\file.txt", st[80];
  • FILE *fp;
  • fp=fopen(fname,"a+");
  • clrscr();
  • printf("\n%s файлына мәлімет жазу\n",fname);
  • puts("\nФайлға жазылатын мәтін: ");
  • gets(st);
  • fputs(st,fp);
  • fclose(fp);
  • printf(“Аяқтау үшін Enter басыңыз");
  • getch();
  • }
  • Тыңдағандарыңызға
  • рахмет!
  • fwrite және fread функциялары
  • fwrite файлға структураны жазғанда қолданылады. fwrite функциясының жалпы жазылу түрі:
  • fwrite (структура адресі,sizeof(структура аты,l,fp);
  • fread функциясы файлдан структураны оқу үшін қолданылады. fread функциясының жазылу түрі:
  • fread (структура адресі,sizeof(структура аты,l,fp);
  • Сөз тіркесіндегі fgets және fputs функциялары
  • Сөз тіркестерін файлдан оқу кезінде fgets функциясы қолданылады, оның жазылу түрі:
  • fgets(нұсқауыш,MAXLEN,fp);
  • нұсқауыш – компьютер жадындағы орынға сілтейтін нұсқауыш;
  • MAXLEN – оқылатын тіркестің максимал ұзындығы;
  • fp – файлға нұсқауыш.
  • Мысалы:
  • #define L 20
  • main()
  • { FILE *fp;
  • char *st[n];
  • fp=fopen(“stroka”,”r”);
  • while(fgets(st,L,fp)!=NULL)
  • puts (st);
  • }
  • Файлдарға сөз тіркестерін жазу үшін fputs функциясы келесі түрде қолданылады:
  • status=fputs(қатар нұсқауышы,fp);
  • status – бүтін сан, оның мәні eof функциясында жазыла-ды, егер fputs() функциясы файлдың соңына жеткен болса немесе қате тапса, fputs функциясы жазылатын жолдың соңына /0 символын жазбайды.
  •  
  • мұндағы структура адресі орнына структура құрылған массив аты болуы да мүмкін.
  •  
  •  
  •  
  •  
  •  
  •  
  •  

жүктеу 22,08 Kb.

Достарыңызбен бөлісу:




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау