Тема: «Буферезированный ввод-вывод»

Московский приборостроительный техникум

федерального государственного бюджетного образовательного учреждения

высшего профессионального образования

«Российский государственный торгово-экономический университет»

(МПТ РГТЭУ)

Специальность 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;

}

}

}

Скриншот работы:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: