jw_cad 外部変形 - (1002) gccで文字寸法を取得する(hcw,hch,hcd,hcc) -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

gccで文字寸法を取得する(hcw,hch,hcd,hcc)

:gccで文字寸法を取得する(hcw,hch,hcd,hcc)
@echo off
if not exist %~dpn0.exe (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.c
    gcc -Os %~dpn0.c -o %~dpn0.exe -s
  )
)
%~dpn0
goto:eof

REM #jww
REM #e

#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
  FILE *f, *g;
  int n;
  char S_[256], *F[20];
  char SS[256];
  char cn[40], pcn[40];
  int flg = 0;
  double hcw[11], hch[11], hcd[11];
  int hcc[11];
  double cw, ch, cd;
  int i, cni, cc;
  if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
    while (fgets(S_, 256, f) != NULL) {
      strcpy(SS, chomp(S_));
      split(SS, F);
      if (strncmp(S_, "hcw", 3) == 0) {
        for (i = 1; i <= 10; i++) { hcw[i] = atof(F[i]); }
      }
      if (strncmp(S_, "hch", 3) == 0) {
        for (i = 1; i <= 10; i++) { hch[i] = atof(F[i]); }
      }
      if (strncmp(S_, "hcd", 3) == 0) {
        for (i = 1; i <= 10; i++) { hcd[i] = atof(F[i]); }
      }
      if (strncmp(S_, "hcc", 3) == 0) {
        for (i = 1; i <= 10; i++) { hcc[i] = atoi(F[i]); }
      }
      if (strncmp(S_, "cn", 2) == 0) {
        n = strlen(S_);
        substr(S_, 2, n-1, pcn);
        if (flg == 0) { 
          strcpy(cn, pcn); flg = 1;
          if (strlen(cn) > 2) {
            cni = 0;
            cw = atof(F[1]);
            ch = atof(F[2]);
            cd = atof(F[3]);
            cc = atoi(F[4]);
          } else {
            cni = atoi(cn);
            cw = hcw[cni];
            ch = hch[cni];
            cd = hcd[cni];
            cc = hcc[cni];
          }
          g = fopen("myfiles", "w");
          fprintf(g, "h#cn%d %g %g %g %d\n", cni, cw, ch, cd, cc);
          fclose(g);
          break;
        }
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}