⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.c

📁 操作系统源代码
💻 C
字号:
/*	program DATABASE.C					*/#include	<string.h>#include	<stdio.h>#include	"advent.h"#include	"advdec.h"#include	"advtext.h"static char oline[256];_PROTOTYPE(void rdupto, (FILE *, int, int, char *));_PROTOTYPE(void rdskip, (FILE *, int, int));/*  Function to scan a file up to a specified  point and either print or return a string.*/void rdupto(fdi, uptoc, print, string)FILE *fdi;int uptoc, print;char *string;{    int c, i;    static _CONST unsigned char key[4] = {'c' | 0x80, 'L' | 0x80,					  'y' | 0x80, 'D' | 0x80};    i = 1;    while ((c = getc(fdi)) != uptoc && c != EOF) {	if (c == '\n')	    i = 1;	if (c >= 0x80)	    c ^= key[i++ & 3];	if (c == '\r')	    continue;	if (print)	    putchar(c);	else	    *string++ = (char) c;    }    if (!print)	*string = '\0';    return;}/*  Function to read a file skipping  a given character a specified number  of times, with or without repositioning  the file.*/void rdskip(fdi, skipc, n)FILE *fdi;int skipc, n;{    int c;    while (n--)	while ((c = getc(fdi)) != skipc)	    if (c == EOF)		bug(32);    return;}/*  Routine to request a yes or no answer to a question.*/boolean yes(msg1, msg2, msg3)int msg1, msg2, msg3;{    char answer[INPUTBUFLEN];    if (msg1)	rspeak(msg1);    do {	switch (*ask("\n> ", answer, sizeof(answer))) {	case 'n':	case 'N':	    if (msg3)		rspeak(msg3);	    return (FALSE);	case 'y':	case 'Y':	    if (msg2)		rspeak(msg2);	    return (TRUE);	default:	    fputs("Please answer Y (yes) or N (no).", stdout);	}    } while (TRUE);}/*  Print a location description from "advent4.txt"*/void rspeak(msg)int msg;{    if (msg == 54)	printf("ok.\n");    else {	fseek(fd4, idx4[msg - 1], 0);	rdupto(fd4, '#', 1, 0);    }    return;}/*  Print an item message for a given state from "advent3.txt"*/void pspeak(item, state)int item, state;{    fseek(fd3, idx3[item - 1], 0);    rdskip(fd3, '/', state + 2);    rdupto(fd3, '/', FALSE, oline);    if (strncmp(oline, "<$$<", 4) != 0)	printf("%s", oline);    return;}/*  Print a long location description from "advent1.txt"*/void desclg(loc)int loc;{    fseek(fd1, idx1[loc - 1], 0);    rdupto(fd1, '#', 1, 0);    return;}/*  Print a short location description from "advent2.txt"*/void descsh(loc)int loc;{    fseek(fd2, idx2[loc - 1], 0);    rdupto(fd2, '#', 1, 0);    return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -