📄 tofmt.c
字号:
/*________________________________________________________________ tofmt.c Ali J. Azarbayejani 17 March 1994 (originated) CONTENTS: DESCRIPTION: ________________________________________________________________*/#include <stdio.h>#include <stdlib.h>struct { char *progname; int verbose; char *fmt; float value; int use_stdin;}params = { "", 0, "%d", 0., 0};static char *flags = "[-v] [-fmt <string>] [ [-] | [#] ]";static char *io = "< stream > stream";static char *help = "";static void alert( char *s ){ fprintf( stderr, "%s: %s\n", params.progname, s );}static void error( char *s ){ alert( s ); exit( -1 );}static void usage( int argc, char **argv ){ fprintf( stderr, "usage: %s %s\n\t%s\n%s", argv[0], flags, io, help ); exit(-1);}static void parse_command_line( int argc, char **argv ){ int i; params.progname = argv[0]; for(i=1; i<argc; i++) { if( !strcmp(argv[i], "-v") ) params.verbose = 1; else if( !strcmp(argv[i], "-fmt") ) params.fmt = argv[++i]; else if( !strcmp(argv[i], "-") ) params.use_stdin = 1; else if( !strcmp(argv[i], "-help") ) usage( argc, argv ); else params.value = atoi( argv[i] ); }}main( int argc, char **argv ){ /* Main variables */ /* First command */ parse_command_line( argc, argv ); if( params.use_stdin ) scanf( "%g", ¶ms.value ); switch( params.fmt[ strlen(params.fmt)-1 ] ) { case 'd': if( params.verbose ) fprintf( stderr, "Integer\n" ); printf( params.fmt, (int) params.value ); break; case 'f': case 'g': if( params.verbose ) fprintf( stderr, "Float\n" ); printf( params.fmt, params.value ); break; default: fprintf( stderr, "Bad format type\n" ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -