📄 fileio.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 + -