📄 fdtd3d.c
字号:
/* program fdtd3d.c - last modified 7/26/94 */
/* Executable 3-D FDTD modeling code. Reads in the binary parameter file
"fdmenu.par" during program execution.
Derived from Yee, IEEE Trans. Ant & Prop, v 14, no 3
Absorbing boundary conditions from Mur, IEEE Trans. Elect. Comp, v. 23 no. 4
Propagation code adapted from Fang, 1989 Ph.D. dissertation U.C. Berkley.
Approximating coaxial cables using 4 grid cells with Ez at intersection of cells
set to zero in air, the 4 E-field (Ex,Ey that is) components are in parallel,
thus the characterisic impedance of the line is 376.7/4=94.175 ohms.
By changing the permittivity and/or magnetic permeability, the impedance of
the line can be increased, or decreased.
The transmit antenna(s) are fed by two balanced square coaxial cables.
written by Roger Roberts
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#include "findif.h"
/* ARRAY PARAMETERS:
DIMSIZX = ARRAY SIZE OF GRID IN X-DIRECTION
DIMSIZY = ARRAY SIZE OF GRID IN Y-DIRECTION
DIMSIZZ = ARRAY SIZE OF GRID IN Z-DIRECTION
ANTYDIM = X-DIMENSION OF 2D ARRAY OF ELECTRICAL PROPERTIES USED TO
CONSTRUCT THE ANTENNAS
ANTXDIM = Y-DIMENSION OF 2D ARRAY OF ELECTRICAL PROPERTIES USED TO
CONSTRUCT THE ANTENNAS
(2D ARRAY CONSTRUCTED IN SUBROUTINE ANTCALCS3.C)
TARGSIZX = X-DIMENSION OF ARRAY CONSTRUCTED TO SIMULATE A PIPE BURIED
WITH LONG AXIS IN Y-DIRECTION
TARGSIZY = X-DIMENSION OF ARRAY CONSTRUCTED TO SIMULATE A PIPE BURIED
WITH LONG AXIS IN Y-DIRECTION
TARGSIZZ = X-DIMENSION OF ARRAY CONSTRUCTED TO SIMULATE A PIPE BURIED
WITH LONG AXIS IN Y-DIRECTION
SPHDIM = X,Y, AND Z-DIMENSIONS OF ARRAY CONSTRUCTED TO SIMULATE A
BURIED SPHERE (3D ARRAY CONSTRUCTED IN SUBROUTINE SPHCALC.C)
COAXDIMZ = Z-DIMENSION OF PORTION OF SQUARE COAXIAL CABLES WITHIN THE
GRID AND FEEDING THE TRANSMIT ANTENNA(S)
CODIMABO = Z-DIMENSION OF PORTION OF SQUARE COAXIAL CABLES OUTSIDE THE
GRID
OSUDIMXY = X,Y-DIMENSIONS OF ARRAYS CONSTRUCTED TO SIMULATE OSU ANTENNA
ENCLOSURE
OSUDIMZ = Z-DIMENSION OF ARRAY CONSTRUCTED TO SIMULATE OSU ANTENNA
ENCLOSURE (3D ARRAY CONSTRUCTED IN SUBROUTINE ANTCALCS3.C)
PATTNUM = NUMBER OF TIME VALUES STORED IN FIELD PATTERN FILE
PIPDIMZ = Z-DIMENSION OF ARRAY CONSTRUCTED TO SIMULATE A HORIZONTAL
PIPE ORIENTED AT SPECIFIED AZMUTHAL ANGLE
PIPDIMXY = X,Y-DIMENSIONS OF ARRAY CONSTRUCTED TO SIMULATE A HORIZONTAL
PIPE ORIENTED AT SPECIFIED AZMUTHAL ANGLE
(3D ARRAY CONSTRUCTED IN SUBROUTINE PIPCALC3.C)
*/
#define DIMSIZX 131
#define DIMSIZY 131
#define DIMSIZZ 131
#define ANTYDIM 60
#define ANTXDIM 60
#define TARGSIZX 10
#define TARGSIZY 120
#define TARGSIZZ 10
#define SPHDIM 34
#define COAXDIMZ 60
#define CODIMABO 101
#define OSUDIMXY 65
#define OSUDIMZ 10
#define PATTNUM 150
#define PIPDIMZ 16
#define PIPDIMXY 110
/* SPHERE PARAMETERS BELOW */
/*
int Espx[SPHDIM][SPHDIM][SPHDIM],Espy[SPHDIM][SPHDIM][SPHDIM],Espz[SPHDIM][SPHDIM][SPHDIM];
float Espox[SPHDIM][SPHDIM][SPHDIM],Espoy[SPHDIM][SPHDIM][SPHDIM],Espoz[SPHDIM][SPHDIM][SPHDIM];
*/
/* PIPE PARAMETERS BELOW */
int Espx[PIPDIMXY][PIPDIMXY][PIPDIMZ],Espy[PIPDIMXY][PIPDIMXY][PIPDIMZ],Espz[PIPDIMXY][PIPDIMXY][PIPDIMZ];
float Espox[PIPDIMXY][PIPDIMXY][PIPDIMZ],Espoy[PIPDIMXY][PIPDIMXY][PIPDIMZ],Espoz[PIPDIMXY][PIPDIMXY][PIPDIMZ];
/* Big 3-D Arrays */
float Hx[DIMSIZX][DIMSIZY][DIMSIZZ],Hy[DIMSIZX][DIMSIZY][DIMSIZZ],Hz[DIMSIZX][DIMSIZY][DIMSIZZ];
float Ex[DIMSIZX][DIMSIZY][DIMSIZZ],Ey[DIMSIZX][DIMSIZY][DIMSIZZ],Ez[DIMSIZX][DIMSIZY][DIMSIZZ];
/* ARRAYS FOR ABC'S */
float Ezxolda[2][DIMSIZY][DIMSIZZ],Eyxolda[2][DIMSIZY][DIMSIZZ];
float Exzolda[DIMSIZX][DIMSIZY][2],Eyzolda[DIMSIZX][DIMSIZY][2];
float Exyolda[DIMSIZX][2][DIMSIZZ],Ezyolda[DIMSIZX][2][DIMSIZZ];
float Ezxmaxa[2][DIMSIZY][DIMSIZZ],Eyxmaxa[2][DIMSIZY][DIMSIZZ];
float Exzmaxa[DIMSIZX][DIMSIZY][2],Eyzmaxa[DIMSIZX][DIMSIZY][2];
float Exymaxa[DIMSIZX][2][DIMSIZZ],Ezymaxa[DIMSIZX][2][DIMSIZZ];
float Hzx2[2][DIMSIZY][DIMSIZZ],Hyx2[2][DIMSIZY][DIMSIZZ];
float Hxz2[DIMSIZX][DIMSIZY][2],Hyz2[DIMSIZX][DIMSIZY][2];
float Hxy2[DIMSIZX][2][DIMSIZZ],Hzy2[DIMSIZX][2][DIMSIZZ];
float Hzxolda[2][DIMSIZY][DIMSIZZ],Hyxolda[2][DIMSIZY][DIMSIZZ];
float Hxzolda[DIMSIZX][DIMSIZY][2],Hyzolda[DIMSIZX][DIMSIZY][2];
float Hxyolda[DIMSIZX][2][DIMSIZZ],Hzyolda[DIMSIZX][2][DIMSIZZ];
float Hzxmaxa[2][DIMSIZY][DIMSIZZ],Hyxmaxa[2][DIMSIZY][DIMSIZZ];
float Hxzmaxa[DIMSIZX][DIMSIZY][2],Hyzmaxa[DIMSIZX][DIMSIZY][2];
float Hxymaxa[DIMSIZX][2][DIMSIZZ],Hzymaxa[DIMSIZX][2][DIMSIZZ];
float Ezi[DIMSIZX][DIMSIZY];
/* SHEET PARAMETERS BELOW */
float Exsho[DIMSIZX][DIMSIZY],Eysho[DIMSIZX][DIMSIZY],Ezisho[DIMSIZX][DIMSIZY];
float Hxsho[DIMSIZX][DIMSIZY],Hysho[DIMSIZX][DIMSIZY];
/* TRANSMIT AND RECEIVE ANTENNAS' COAXIAL CABLES */
/* ---- RECEIVE ANTENNA(s) */
float Excr1olda[2][2],Excr2olda[2][2],Excr3olda[2][2],Excr4olda[2][2];
float Eycr1olda[2][2],Eycr2olda[2][2],Eycr3olda[2][2],Eycr4olda[2][2];
float Excri1olda[2][COAXDIMZ],Excri2olda[2][COAXDIMZ],Eycri1olda[2][COAXDIMZ],Eycri2olda[2][COAXDIMZ];
float Excri3olda[2][COAXDIMZ],Excri4olda[2][COAXDIMZ],Eycri3olda[2][COAXDIMZ],Eycri4olda[2][COAXDIMZ];
float Hxcri1olda[2][COAXDIMZ],Hycri1olda[2][COAXDIMZ],Hzcri1olda[2][2][COAXDIMZ];
float Hxcri2olda[2][COAXDIMZ],Hycri2olda[2][COAXDIMZ],Hzcri2olda[2][2][COAXDIMZ];
float Hxcri3olda[2][COAXDIMZ],Hycri3olda[2][COAXDIMZ],Hzcri3olda[2][2][COAXDIMZ];
float Hxcri4olda[2][COAXDIMZ],Hycri4olda[2][COAXDIMZ],Hzcri4olda[2][2][COAXDIMZ];
float Excri1uolda[2][CODIMABO],Excri2uolda[2][CODIMABO],Excri3uolda[2][CODIMABO],Excri4uolda[2][CODIMABO];
float Eycri1uolda[2][CODIMABO],Eycri2uolda[2][CODIMABO],Eycri3uolda[2][CODIMABO],Eycri4uolda[2][CODIMABO];
float Hxcr1[2][CODIMABO],Hxcr2[2][CODIMABO],Hxcr3[2][CODIMABO],Hxcr4[2][CODIMABO];
float Hycr1[2][CODIMABO],Hycr2[2][CODIMABO],Hycr3[2][CODIMABO],Hycr4[2][CODIMABO];
float Hzcr1[2][2][CODIMABO],Hzcr2[2][2][CODIMABO],Hzcr3[2][2][CODIMABO],Hzcr4[2][2][CODIMABO];
float Excr1[2][CODIMABO],Excr2[2][CODIMABO],Excr3[2][CODIMABO],Excr4[2][CODIMABO];
float Eycr1[2][CODIMABO],Eycr2[2][CODIMABO],Eycr3[2][CODIMABO],Eycr4[2][CODIMABO];
float Ezcr1[2][CODIMABO],Ezcr2[2][CODIMABO],Ezcr3[2][CODIMABO],Ezcr4[2][CODIMABO];
/* ---- TRANSMIT ANTENNA(s) */
float Exc1olda[2][2],Exc2olda[2][2],Exc3olda[2][2],Exc4olda[2][2];
float Eyc1olda[2][2],Eyc2olda[2][2],Eyc3olda[2][2],Eyc4olda[2][2];
float Exc1maxa[2],Exc2maxa[2],Exc3maxa[2],Exc4maxa[2];
float Eyc1maxa[2],Eyc2maxa[2],Eyc3maxa[2],Eyc4maxa[2];
float Exci1olda[2][COAXDIMZ],Exci2olda[2][COAXDIMZ],Exci3olda[2][COAXDIMZ],Exci4olda[2][COAXDIMZ];
float Eyci1olda[2][COAXDIMZ],Eyci2olda[2][COAXDIMZ],Eyci3olda[2][COAXDIMZ],Eyci4olda[2][COAXDIMZ];
float Hxci1olda[2][COAXDIMZ],Hxci2olda[2][COAXDIMZ],Hxci3olda[2][COAXDIMZ],Hxci4olda[2][COAXDIMZ];
float Hyci1olda[2][COAXDIMZ],Hyci2olda[2][COAXDIMZ],Hyci3olda[2][COAXDIMZ],Hyci4olda[2][COAXDIMZ];
float Hzci1olda[2][2][COAXDIMZ],Hzci2olda[2][2][COAXDIMZ],Hzci3olda[2][2][COAXDIMZ],Hzci4olda[2][2][COAXDIMZ];
float Exci1uolda[2][CODIMABO],Exci2uolda[2][CODIMABO],Exci3uolda[2][CODIMABO],Exci4uolda[2][CODIMABO];
float Eyci1uolda[2][CODIMABO],Eyci2uolda[2][CODIMABO],Eyci3uolda[2][CODIMABO],Eyci4uolda[2][CODIMABO];
float Hxc1[2][CODIMABO],Hxc2[2][CODIMABO],Hxc3[2][CODIMABO],Hxc4[2][CODIMABO];
float Hyc1[2][CODIMABO],Hyc2[2][CODIMABO],Hyc3[2][CODIMABO],Hyc4[2][CODIMABO];
float Hzc1[2][2][CODIMABO],Hzc2[2][2][CODIMABO],Hzc3[2][2][CODIMABO],Hzc4[2][2][CODIMABO];
float Exc1[2][CODIMABO],Exc2[2][CODIMABO],Exc3[2][CODIMABO],Exc4[2][CODIMABO];
float Eyc1[2][CODIMABO],Eyc2[2][CODIMABO],Eyc3[2][CODIMABO],Eyc4[2][CODIMABO];
float Ezc1[2][CODIMABO],Ezc2[2][CODIMABO],Ezc3[2][CODIMABO],Ezc4[2][CODIMABO];
/* 2-D ARRAYS OF NUMBERS (0'S AND 1'S) DETERMINING THE SHAPE OF THE ANTENNA(S) */
float yval[ANTXDIM][ANTYDIM],xval[ANTXDIM][ANTYDIM];
/*OSU ANTENNA PARAMETERS BELOW */
float Exosuo[OSUDIMXY][OSUDIMXY][OSUDIMZ],Eyosuo[OSUDIMXY][OSUDIMXY][OSUDIMZ],Ezosuo[OSUDIMXY][OSUDIMXY][OSUDIMZ];
float Hxanta[1][32][2],Hzanta[2][32][1],Hxantn[1][32][2],Hzantn[2][32][1],Hyterm[2][2][2],Hxterm[1][4][2];
char filoutr[60],filoutrx[60],filoutt[60],filoutE[60];
FILE *ffdi3,*ftimet,*ftimer,*ffx,*ffy,*ffz,*ftimerx,*fftim,*fftimb,*fdump,*fantpar,*fIt,*fIr,*fsph,*fpatout,*fpat,*fftimc,*fparms,*fbin,*fvpx,*fvpp;
/* ================================= PROGRAM FDTD3D ======================================== */
void main(void){
/* ARRAYS ALLOWING 1-D VARIABILITY IN ELECTRICAL PROPERTIES IN THE GRID */
float perme[DIMSIZZ],sige[DIMSIZZ];
float permez[DIMSIZZ],sigez[DIMSIZZ];
float permabs[OSUDIMZ],condabs[OSUDIMZ];
/* --------- 1-D ARRAYS FOR ABC's -------------------------- */
float fmuloxy[DIMSIZZ],fmuloxz[DIMSIZZ],fmulozx[DIMSIZZ];
float fmulozy[DIMSIZZ],fmuloyz[DIMSIZZ],fmuloyx[DIMSIZZ];
float fmulozyb[DIMSIZZ],fmuloyzb[DIMSIZZ],fmuloyxb[DIMSIZZ];
float fmuloxyb[DIMSIZZ],fmuloxzb[DIMSIZZ],fmulozxb[DIMSIZZ];
float fmulo2xz[DIMSIZZ],fmulo2yx[DIMSIZZ],fmulo2zx[DIMSIZZ];
float fmulo2xy[DIMSIZZ],fmulo2yz[DIMSIZZ],fmulo2zy[DIMSIZZ];
float fmulo2xzb[DIMSIZZ],fmulo2yxb[DIMSIZZ],fmulo2zxb[DIMSIZZ];
float fmulo2xyb[DIMSIZZ],fmulo2yzb[DIMSIZZ],fmulo2zyb[DIMSIZZ];
float fmulo3xx[DIMSIZZ],fmulo3xy[DIMSIZZ],fmulo3xz[DIMSIZZ];
float fmulo3yx[DIMSIZZ],fmulo3yy[DIMSIZZ],fmulo3yz[DIMSIZZ];
float fmulo3zx[DIMSIZZ],fmulo3zy[DIMSIZZ],fmulo3zz[DIMSIZZ];
float rho[DIMSIZZ],rhoz[DIMSIZZ];
/* -------- 1-D ARRAYS USED IN EQUATIONS TO UPDATE ELECRIC AND MAGNETIC FIELDS */
float hmulx[DIMSIZZ],hmuly[DIMSIZZ],hmulz[DIMSIZZ],ur[DIMSIZZ],hmul;
float enmulx[DIMSIZZ],enmuly[DIMSIZZ],enmulz[DIMSIZZ];
float enmulxy[DIMSIZZ],enmulxz[DIMSIZZ],enmulyx[DIMSIZZ],enmulyz[DIMSIZZ];
float enmulzx[DIMSIZZ],enmulzy[DIMSIZZ];
float eoldmulx[DIMSIZZ],eoldmuly[DIMSIZZ],eoldmulz[DIMSIZZ];
float enmulspx[3],enmulspy[3],enmulspz[3],eoldmulsp[3];
float eoldmosu[OSUDIMZ],enmulosu[OSUDIMZ],permosu[OSUDIMZ],condosu[OSUDIMZ];
/* 1-D ARRAYS FOR FIELD MEASUREMENTS ALONG A RADIAL ARC */
float Expat[PATTNUM][180],Eypat[PATTNUM][180],Ezpat[PATTNUM][180];
short int expa[180],eypa[180],ezpa[180];
/* VARIABLES ASSOCIATED WITH EQUATIONS UPDATING E AND H */
float enmulpx,enmulpy,enmulpz,eoldmulp,pipeperm,pipecond;
float termimp,eoldmult,enmultx,enmulty,enmultz,eoldmulr,enmulrx,enmulry,enmulrz,termrcon;
float enmulpxs,enmulpys,enmulpzs,eoldmulps,paveperm,pavecond;
float enmulshave,enmulsht,eoldmulsht,eoldmshave,eave,save;
float hmulc;
float eoldmulc,enmulc,coaxperm,coaxcond,fmuloc,eoldmulcb,enmulcb,Zx,Eramp;
float eoldmulpr,enmulpr,Eyoldpr,sigpr;
float reoldmulc,renmulc,rcoaxperm,rcoaxcond,rfmuloc,rhmulc,reoldmulcb,renmulcb;
register int x,y,z,t,a,b,xc,yc,zc,zend;
int ycent,xcent,zcent,xcere,ycere,zcere; /* COORDINATES OF TERMINALS OF XMIT AND RECEIVE ANTENNAS */
int zcfin; /* Z-COORDINATE OF BOTTOM OF COAX'S OUTER CONDUCTOR */
float lnval,hthinmul,wirerad; /* VARIABLES ASSOCIATED WITH THIN WIRE APPROX */
short int zsh,shtyst,shtxst,shtxlen,shtylen; /* VARIABLE ASSOCIATED WITH THIN SHEET APPROX */
int loop; /* INDEX OF OUTERMOST LOOP (FOR MULTIPLE RUNS) */
int zcm; /* NUMBER OF GRID CELLS COAXIAL CABLE EXTENDS ABOVE GRID */
int sidlen,xo,yo,zo,rad,cyllen; /* VARIABLES ASSOCIATED WITH BURIED TARGET LOCATION AND SIZE */
short int tmcnt; /* INDEX OF TIME STEP DATA WRITTEN TO FILE */
int xm,ym,zm; /* DIMENSIONS OF 3-D ARRAYS UTILIZED IN THE MODEL */
short int interfac; /* Z-COORDINATE OF THE AIR-GROUND INTERFACE */
float Iyr,Iyt; /* CALCULATED CURRENT ON COAX CABLES ATTACHED TO T AND R ANTENNAS */
short int proypos,proxpos; /* COORDINATES USED FOR DATA OUPUT */
short int planeval,planevala,planevalb,planevalc; /* COORDINATES USED FOR DATA OUTPUT */
short int tdela,tdelb,tdelc; /* NUMBER OF TIME STEPS TO SKIP OVER BEFORE WRITING OUTPUT */
float Eamp; /* SPECIFIED ELECTRIC FIELD (EXCITATION) */
float Ecen[8]; /* ARRAY OF OLD E-VALUES USED IN EQ. TO UPDATE E ON R ANTENNA */
short int anty,antx,antz; /* DIMENSIONS OF 2-D or 3-D ARRAY FOR ANTENNAS READ FROM ANTDIM.PAR
OR HORNANT.PAR */
float len; /* LENGTH OF DIPOLE ANTENNA IN GRID CELLS */
float tlength,timvar,tcval; /* VARIABLES ASSOCIATED WITH EXCITATION IMPULSE */
short int xas,yas,zas,midt1x,midt1y,maxtrx,maxtry,midr1x,midr1y; /* VARIABLES USED TO POSITION THE 2-D ANTENNA ARRAY IN 3-D GRID */
short int xc1,yc1,xc2,yc2,xc3,yc3,xc4,yc4; /* POSITIONS OF TRANSMIT ANTENNA(S) COAXIAL CABLES IN GRID */
short int ycr1,ycr2,xcr1,xcr2,ycr3,ycr4,xcr3,xcr4; /* POSITIONS OF REC. ANTENNA(S) COAXIAL CABLES IN GRID */
float stab; /* VARIABLE IN STABILITY CHECK CALCULATION */
float dxi,dyi,dzi; /* INVERSE OF GRID CELL DIMENSIONS (i.e. dxi=1/fd1.dx) */
float termcon; /* CONDUCTIVITY ASSIGNED TO GAP BETWEEN TERMINALS OF REC. ANTENNA
IF NO COAXIAL CABLE IS ATTACHED */
int xpd,ypd,zpd; /* LOCATION OF INFINITESIMAL DIPOLE IN GRID (IF USED) */
int osudimz; /* Z-DIMENSION OF OSU ANTENNA, IN GRID CELLS */
int prpt; /* VARIABLE DEFINING (A) VERTICAL POSITION OF PROBE ANTENNA IN
GRID CELLS, OR
(B) VERTICAL POSITION OF MEASUREMENT POINT
OF ELECTRIC FIELD RECORDED IN OUTPUT
FILE, IN GRID CELLS */
int readsph; /* 3-D SPHERE ARRAY DIMENSIONS READ FROM sphdim.par */
double uo,eo,pi,eonan; /* ELECTROMAGNETIC PARAMETERS */
float w; /* ANGULAR FREQUENCY (WHEN USED) */
float Vo,vold,v; /* VOLTAGES SPECIFIED OR CALCULATED IN THE GRID */
char binparm[60],youtfil[60],xoutfil[60],zoutfil[60]; /* FILENAMES */
char verxfil[60],verpfil[60],filpat[60],filoutE2[60]; /* FILENAMES */
int pipexy,pipez,pipdimxy,pipdimz; /* ARRAY DIMENSIONS */
int tra1flag,rec1flag,tra2flag,rec2flag; /* FLAGS USED TO ACTIVATE COAXIAL CABLES */
int exitflag; /* IF SET, PROGRAM EXECUTION STOPPED AND ERROR
REPORT WRITTEN TO THE FILE SPECIFIED BY fd1.filout */
/* =======================================================================
INITIALIZE FLAGS AND MISC. VARIABLES
======================================================================= */
xc1=xc2=xc3=xc4=yc1=yc2=yc3=yc4=0;
xcr1=xcr2=xcr3=xcr4=ycr1=ycr2=ycr3=ycr4=0;
exitflag=0;
tra1flag=0;
tra2flag=0;
rec1flag=0;
rec2flag=0;
osudimz=OSUDIMZ;
pipdimxy=PIPDIMXY;
pipdimz=PIPDIMZ;
pi=3.1415927;
eo=8.8541878e-12;
uo=4.0*pi*1.0e-7;
eonan=8.8541878e-3;
/* ========================================================================
1 OPEN AND READ BINARY FILE CONTAINING MODEL PARAMETERS SET IN PROGRAM FDMENU
2 THEN WRITE MODEL PARAMETERS TO FILE fd1.filout WITH THE EXTENSION ".bin"
3 LASTLY, OPEN FILE fd1.filout TO OUTPUT CURRENT PROGRAM SETTINGS - WHICH
ARE WRITTEN TO fd1.filout DURING PROGRAM EXECUTION
========================================================================= */
if ((ffdi3=fopen("fdmenu.par","rb")) == NULL) {
printf("CAN'T OPEN fdmenu.PAR FILE\n");
}
else {
fread(&fd1,sizeof(struct fddat),1,ffdi3);
}
fclose(ffdi3);
strcpy(binparm,fd1.filout);
strcat(binparm,".bin");
if ((fbin=fopen(binparm,"wb")) == NULL) {
printf("CAN'T OPEN %s FILE\n",binparm);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -