#include <stdio.h> #include <string.h> #include
<mbstring.h>
void Sjisstr2Jisstr(char *sjistext, char
*jistext) { char
one[4]="A"; char two[4]="AB";
char rtlf[4]="\r\n"; unsigned short int
sjis,jis; const char shiftin[4]={ 0x1b, 0x24, 0x42,
0 }; const char shiftout[4]={ 0x1b, 0x28, 0x42, 0
}; unsigned char *p=(unsigned char
*)sjistext; int kanjimode=0;
*jistext=0; while (*p)
{ if
(kanjimode==0&&(*p&0x80))
{
strcat(jistext,shiftin);
kanjimode=1; } else if
(kanjimode==1&&(!(*p&0x80)))
{
strcat(jistext,shiftout);
kanjimode=0;
} if (kanjimode==1)
{
sjis=((*p)<<8);
p++;
if (!(*p))
break;
sjis+=*p;
jis=_mbcjmstojis(sjis);
two[1]=(char)jis;
two[0]=(char)(jis>>8);
strcat(jistext,two); } else
{ if
(*p=='\n' && *(p-1)!='\r')
{
strcat(jistext,rtlf);
} else
{
one[0]=*p;
strcat(jistext,one);
}
} p++;
} if (kanjimode==1)
{
strcat(jistext,shiftout); } }
int
main() { char
sjis[100]="今日はよい天気です。"; char
jis[100];
Sjisstr2Jisstr(sjis,jis);
puts(sjis); puts(jis); return
0; } |