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

📄 fileio.c

📁 [Game.Programming].Academic - Graphics Gems (6 books source code)
💻 C
字号:
/******************************************************************************    TEST FILE FOR graph (Dynamic Layout Alg)****    MODUL   - BUFFERED FILE INPUT WITH SYNTAX CHECK**		AND NOT BUFFERED FILE OUTPUT**** Author: dr. Szirmay-Kalos Laszlo (szirmay@fsz.bme.hu)**	   Technical University of Budapest, Hungary*****************************************************************************/#ifdef MSWINDOWS#include "fileio.hxx"#else#include "fileio.hxx"#endif/*----------------------   Get ---------------------------------*//* Buffered character input from the opened file		*//* IN  : character address					*//* OUT : char is put to the address				*//*	 ret = was it succesful					*//*--------------------------------------------------------------*/BOOL FileIO :: Get( char * pc ){    if ( buffpt == nbytes ) {	if ( (nbytes = fread( buffer, 1, BUFFERSIZE, file)) <= 0) return FALSE;	else							  buffpt = 0;    }    *pc = buffer[ buffpt++ ];    return TRUE;}/*------------------	 GetString  ----------------------------*//* Gets a string from a opened file. String ends are space, tab *//* EOL(\n) and operators( =, : ). Parts between # end EOL are	*//* ignored ( comments )						*//* IN  : string buffer adress and maximal length		*//* OUT : was it succesful ?					*//*	 string is put to the address s				*//*--------------------------------------------------------------*/BOOL FileIO :: GetString ( pchar s, int maxlength ){    int	 ichar = 0;    char last_char;    BOOL iscomment = FALSE;    for ( ; ; ) {/**    GET CHARACTER*/	if ( !Get ( &last_char ) )  return FALSE;	switch ( last_char ) {/**    COMMENT*/	case '#':	    iscomment = TRUE;	    break;/**    OPERATORS*/	case ':':	case '=':	    if ( !iscomment ) {		if (ichar > 0) UnGet();		    // unget operator		else	       s[ichar++] = last_char;		s[ichar] = '\0';		return TRUE;	    } else break;/**    SEPARATORS*/	case '\n':	    iscomment = FALSE;	    line_count++;	case '\t':	case ' ':	    if ( !iscomment ) {		if ( ichar > 0 ) {		    s[ichar] = '\0';		    return TRUE;		}	    }	    break;/**    KEYWORDS AND VARIABLES*/	default:	    if ( !iscomment ) {		if ( ichar == maxlength ) {		    return FALSE;		} else {		    s[ichar++] = last_char;		    break;		}	    } else  break;	}    }}/*------------------	 OpenFile   ----------------------------*//* Opens a TEXT file for the defined operation			*//* IN  : file name						*//* OUT : was it succesful ?					*//* SIDE EFFECT: - internal file descriptor is created end line	*//*		  is initialized				*//*--------------------------------------------------------------*/BOOL FileIO :: OpenFile( pchar name ){    line_count = 1;    buffpt = 0;    nbytes = 0;    if ( (file = fopen( name, operation )) == NULL ) {	return FALSE;    }    return TRUE;}/*------------------	 CloseFile   ---------------------------*//* Closes the opened file					*//*--------------------------------------------------------------*/void FileIO :: CloseFile ( ){    fclose ( file );}/*------------------	 GetKeyWord  ---------------------------*//* Gets a string and compares with the pattern keyword		*//* IN  : pattern keyword					*//* OUT : is the specified pattern received ?			*//*--------------------------------------------------------------*/BOOL FileIO :: GetKeyWord ( pchar key ){    if ( !GetString( s, MAXSTRING ) ) return FALSE;    return GetKeyAgain( key );}/*------------------	 GetKeyAgain ---------------------------*//* Gets the last inspected string again and compares with the	*//* pattern keyword						*//* IN  : pattern keyword					*//* OUT : is the specified pattern received ?			*//*--------------------------------------------------------------*/BOOL FileIO :: GetKeyAgain ( pchar key ){    if ( strcmp( key, s ) == 0 )      return TRUE;    else {	return FALSE;    }}/*------------------	 GetVariable ---------------------------*//* Gets a double variable and compares to the specified range	*//* IN  : address of var and min, max of range			*//* OUT : was it succesful, and the received var			*//*--------------------------------------------------------------*/BOOL FileIO :: GetVariable ( double *pv, double minv, double maxv ){    if ( !GetString(s,MAXLINE) ) return FALSE;    if ( sscanf(s,"%lf", pv ) != 1 ) {	return FALSE;    } else {	if ( *pv < minv || *pv > maxv ) {	    return FALSE;	}	return TRUE;    }}/*------------------	 GetOperator ---------------------------*//* Gets a non-white character and compares with the specified	*//* operator							*//* IN  : specified operator					*//* OUT : was it the specified operator				*//*--------------------------------------------------------------*/BOOL FileIO :: GetOperator ( char op ){    if ( !GetString( s, 1 ) ) return FALSE;    if ( s[0] != op ) {	return FALSE;    }    return TRUE;}/*------------------	 PutString   ---------------------------*//* Writes the given string to the file without buffering	*//* IN  : specified string					*//* OUT : was it succesful					*//*--------------------------------------------------------------*/BOOL FileIO :: PutString ( pchar s ){    if ( fwrite( s, 1, strlen(s), file ) == 0) return FALSE;    else				       return TRUE;}

⌨️ 快捷键说明

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