📄 prfp.c
字号:
/************************************************************* * File: tools/prfp.c * Purpose: print floating-point values * Author: Phil Bunce (pjb@carmel.com) * Revision History: * 970518 Start of revision history */#include <stdio.h>int fflag;char *a1,*a2;char *usage[] = { "prfp -- Print floating point", "usage: prfp {[-f] fpvalue | [hexvalue] hexvalue}", "", "Examples:", "% prfp 3.142", "400922d0 e5604189 dp=3.142000e+00", "", "% prfp -f 3.142", "40491687 sp=3.142000e+00", "", "% prfp 400922d0 e5604189", "400922d0 e5604189 dp=3.142000e+00", "", "% prfp 40491687", "40491687 sp=3.142000e+00", 0};/************************************************************** main(argc,argv)*/main(argc,argv)int argc;char *argv[];{double d;float s;unsigned long *sp,*dp;int i;for (i=1;i<argc;i++) { if (argv[i][0] == '-') { if (argv[i][1] == 'f') fflag = 1; else { fprintf(stderr,"%c: unknown option\n",argv[i][1]); help(); exit(1); } } else { if (a1 == 0) a1 = argv[i]; else if (a2 == 0) a2 = argv[i]; else { fprintf(stderr,"Too many args\n"); help(); exit(1); } } }dp = (unsigned long *)&d;sp = (unsigned long *)&s;if (a1 == 0) { fprintf(stderr,"Too few args\n"); help(); exit(1); }if (a2 == 0) { if (strchr(a1,'.')) { /* fp */ if (fflag) { /* sp */ sscanf(a1,"%f",&s); printf("%08lx sp=%e\n",*sp,s); } else { /* dp */ sscanf(a1,"%lf",&d); printf("%08lx %08lx dp=%e\n",dp[0],dp[1],d); } } else { /* hex sp */ sscanf(a1,"%lx",sp); printf("%08lx sp=%e\n",*sp,s); } }else { /* hex dp */ sscanf(a1,"%lx",dp); sscanf(a2,"%lx",&dp[1]); printf("%08lx %08lx dp=%e\n",dp[0],dp[1],d); }}/************************************************************** help()*/help(){int i;for (i=0;usage[i];i++) printf("%s\n",usage[i]);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -