
Л.р. №1 (Файловая система UNIX )
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Кафедра кибернетики
Лабораторная работа №1
по дисциплине
«Математическое обеспечение ЭВМ»
на тему: «Файловая система UNIX»
Выполнила студентка группы М-75
Катышева С.Н.
Проверил проф. д.т.н.
Гостев И.М.
Москва 2009
Задание: Продемонстрировать навыки работы с файлами на примере программы на языке С.
Программа на языке C реализует следующую задачу:
В файле а1.txt находятся символы, среди которых числа от 0 до 9. Следует переписать числа в файл a2.txt, разделяя их пробелами, посчитать количество этих чисел и записать в обратном порядке.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h> // Объявляет функции, предназначенные для проверок символов
int main ()
{
FILE *f1,*f2;
int i=0,k=0,j,c,p;
char s[255];
//открываем файлы
if ((f1=fopen("a1.txt","r"))==NULL) // f1 теперь указатель на a1.txt
{
printf("\n Can't open f1.\n");getche();
exit(1);
}
if ((f2=fopen("a2.txt","w+"))==NULL)
{
printf("\n Can't open f2.\n");getche();
exit(1);
}
// Записываем в f2 числа из f1
do
{
c = fgetc(f1); //Чтение текущего символа из входного //потока f1
if (c >= '0' && c <= '9') {
i++;
fprintf(f2, "%c ", c); }
else if (c=='\n ')
fprintf(f2,"\n ");
} while (c!= EOF); // Пока не конец файла
// Запись чисел в обратном порядке
for (j=i;j>0;j--)
{
fseek(f2,2*(j-1),SEEK_SET); // Переход на позицию 2*(j-1)
c=fgetc(f2);
s[k]=c; s[k+1]=' '; k=k+2; // Проходим в обратном порядке
}
s[k]='\0'; // Последним символом записываем null-символ
fseek(f2,0,SEEK_END); // Перемещение к концу потока
fprintf(f2,"\n");
k=fputs(s,f2);
fprintf(f2,"\n");
fprintf(f2,"V ishodnom faile %d chisel\n ", i);
//Закрываем файлы
fclose(f1);
fclose(f2);
return 0;
}
Содержание файла a1.txt:
dgjk635 47gig7 rg!,4145tg57 ge5
tg5g54
Содержание файла a2.txt:
6 3 5 4 7 7 4 1 4 5 5 7 5 5 5 4
4 5 5 5 7 5 5 4 1 4 7 7 4 5 3 6
V ishodnom faile 16 chisel