Московский приборостроительный техникум
федерального государственного бюджетного образовательного учреждения
высшего профессионального образования
«Российский государственный торгово-экономический университет»
(МПТ РГТЭУ)
Специальность 230115 «программирование в компьютерных системах»
Дисциплина: «Системное программирование»
Лабораторная работа № 3
Тема: «Буферезированный ввод-вывод»
Выполнил: студент П-229 П.С.Мосеин "27" июня 2013г. |
Руководитель: ________________ / А.А. Шимбирёв |
Москва 2013
Листинг:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/time.h>
#include<sys/poll.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
#include<limits.h>
int punkt;
FILE *stream;
int fd;
int c;
int main(int argc, char *argv[])
{
printf("Введите 1 для открытия файла и потока данных(через fopen и fdopen) и его закрытия (fcloseall)\n Введите 2 для чтения из потока данных (fgetc) и вталкивания его обратно в поток(ungetc)\nВведите 3 для чтения строки целиком\nВведите 4 для чтения двоичных данных\nВведите 5 для записи 1 символа в поток stream(fputs)\nВведите 6 для записи строки в поток stream(fputs)\nВведите 7 для просмотра прмеры буф. ввода-вывода\nВведите 8 для сброса потока данных(fflush)\nВведите 9 для получение связанного дескриптора файла\nВведите 10 для блокировки файла вручную");
|
|
scanf("%d",&punkt);
fd=open(argv[1],O_RDWR);
switch(punkt)
{
case 1:
{
stream=fopen(argv[1],"r");
stream=fdopen(fd,"r");
fcloseall(stream);
return 0;
}
case 2:
{
c=fgetc(stream);
ungetc(c, stream);
return 0;
}
case 3:
{
char buf[LINE_MAX];
fgets(buf,LINE_MAX,stream);
return 0;
}
case 4:
{
char buf[64];
size_t nr;
nr=fread(buf,sizeof(buf),1,stream);
return 0;
}
case 5:
{
fputc('a',stream);
return 0;
}
case 6:
{
stream = fopen(argv[1],"a");
return 0;
}
case 7:
{
FILE *in,*out;
struct pirate {
char name[100];
unsigned long booty;
unsigned int beard_len;
}p, blackbeard={"Edward Teach",950,48};
out=fopen("test","w");
fwrite(&blackbeard,sizeof(struct pirate),1,out);
fclose(out);
in=fopen("test","r");
fread(&p,sizeof(struct pirate),1,in);
fclose(in);
printf("name=\"%s\" booty=%lu beard_len=%u\n",p.name,p.booty,p.beard_len);
return 0;
}
case 8:
{
fflush(stream);
return 0;
}
case 9:
{
fileno(stream);
return 0;
}
case 10:
{
flockfile(stream);
fputs("list of treasure:\n",stream);
fputs(" (1) 500 gold coins\n",stream);
fputs(" (2) Wonderful ornate dishware\n",stream);
funlockfile(stream);
return 0;
}
}
}
Скриншот работы: