- Файлдардан мәлімет енгізу/ шығару
- 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 символын жазбайды.
-
- мұндағы структура адресі орнына структура құрылған массив аты болуы да мүмкін.
-
-
-
-
-
-
-
-
Достарыңызбен бөлісу: |