jw_cad 外部変形 - (975) gccで文字を逆書きする -

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

 

gccで文字を逆書きする

:gccで文字を逆書きする
@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 #h3 範囲内の「文字」データのみを選択
REM #g1
REM #e

#!この次の行からプログラムを書いてください
#include "jw.h"

void reverse(char *src, char *dst)
{
  dst += strlen(src);
  *dst = '\0';
  while (*src != '\0')
    *(--dst) = *src++;
}

int main(void)
{
  FILE *f, *g;
  int i, n;
  char S_[256], S0[256], *F[20], str[256], str2[256];
  if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
    g = fopen("myfiles", "w");
    while (fgets(S_, 256, f) != NULL) {
      strcpy(S0, S_);
      if (strncmp(S_, "ch", 2) == 0) {
        split(chomp(S_), F);
        i = strcspn(S0, "\"");
        n = strlen(S0);
        substr(S0, i+1, n-i, str2);
        reverse(chomp(str2), str);
        fprintf(g, "ch %s %s %s %s \"%s\n", F[1], F[2], F[3], F[4], str);
      } else {
        if (strncmp(S_, "hq", 2) == 0) {
          fprintf(g, "hd\n");
        } else {
          fprintf(g, S0);
        }
      }
    }
  } else {
    exit(MISSING_JWC_TEMP_TXT);
  }
  fclose(g);
  fclose(f);
  remove("jwc_temp.txt");
  rename("myfiles", "jwc_temp.txt");
  return 0;
}

 

 

全角文字がうまくゆきません。ちょっとしたことだとはおもうんですが。