📄 gr_cvt.c
字号:
/*
Greek character convert function, Can convert the input string to the greek character.
The Greek character convert table:
Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
<==>
A B C D E Z H @ I K ^ M N = O # P S T !! F X W Q
Except the character's shape similar, the rest character:
Γ Δ Θ Λ Ξ Π Σ Φ Ψ Ω
<==>
C D @ ^ = # S F W Q
Note: 1. This program only used in WeiHua interior.
2. This procedure can't convert the transferred character such as: '\\', '\''
*/
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
#define CVT_NUM 10
const unsigned long Ver = (~102); /* Encrypt the version */
const char Head_Info1[] = {"\nFile convert function(Version "};
const char Head_Info2[] = {").\x01\n\n"};
const char Head_Info3[] = {"Created by Windforce(R), at 2004-11-27 13:27.\n"};
const char Head_Info4[] = {"Modified on 2004-11-27 13:28.\n"};
const char Head_Info5[] = {"Copyright (c) WeiHua LTD.\n"};
const char Head_Info6[] = {"All rights reserverd.\n"};
const char Head_Info7[] = {"\nDetail: \n"};
const char Head_Info8[] = {" Convert the input string to the C format string. For example:\n"};
const char Head_Info9[] = {" The source string: ABCD; then the result: 0x41,0x42,0x43,0x44\n"};
const char Head_Info10[] = {" The source string: \"ABCD\"; then the result: 0x41,0x42,0x43,0x44,0x00\n\n"};
const char cvt_tbl_src[CVT_NUM] = {'C', 'D', '@', '^', '=', '#', 'S', 'F', 'W', 'Q'};
const char cvt_tbl_obj[CVT_NUM][9+1] = {
"GR_THITA1",
"GR_DELTA1",
"GR_THITA2",
"GR_DELTA2",
"GR_THITA3",
"GR_PI",
"GR_XIGMA",
"GR_PHY1",
"GR_PHY2",
"GR_OMIGA"
};
unsigned char Chk_Gr_Symbol(char src);
void main(int argc, char *argv[])
{
char src_buf[80]; /* Source file input buffer */
char obj_buf[80]; /* Object file input buffer */
char *src_file; /* Source file string */
char *obj_file; /* Object file string */
FILE *src_fp; /* Source file pointer */
FILE *obj_fp; /* Object file pointer */
printf(Head_Info1); /* Print the head information */
putchar((~Ver)/100%10 + '0');
putchar('.');
putchar((~Ver)/10%10 + '0');
putchar((~Ver)/1%10 + '0');
printf(Head_Info2);
printf(Head_Info3);
printf(Head_Info4);
printf(Head_Info5);
printf(Head_Info6);
printf(Head_Info7);
printf(Head_Info8);
printf(Head_Info9);
printf(Head_Info10);
if(argc <= 1) /* Did't input the source file */
{
printf("Source file:");
src_file = src_buf;
scanf("%s", src_file);
}
else /* argc > 1 */
{
if((strcmp(argv[1], "/?") == 0) || (strcmp(argv[1], "/H") == 0) || (strcmp(argv[1], "/h") == 0))
/* Display the usage */
{
printf("Usage:\n");
printf(" .\\Cvt.exe [Source filename] [Destination filename]\n");
return;
}
src_file = argv[1];
}
do{
if((strcmp(src_file, "q") == 0) || (strcmp(src_file, "Q") == 0) || (strcmp(src_file, "exit") == 0)
|| (strcmp(src_file, "EXIT") == 0) || (strcmp(src_file, "Exit") == 0) || (strcmp(src_file, "eXIT") == 0))
{
return;
}
src_fp = fopen(src_file, "rb");
if(src_fp == NULL)
{
printf("Source file not found!");
getch();
putchar('\n');
printf("Source file:");
src_file = src_buf;
scanf("%s", src_file);
}
else
break;
}while(TRUE);
if(argc <= 2) /* Did't input the object file */
{
printf("Object file:");
obj_file = obj_buf;
scanf("%s", obj_file);
}
else
obj_file = argv[2];
if(strcmp(src_file, obj_file) == 0) /* The same file name */
{
fclose(src_fp);
return;
}
do{
if((strcmp(obj_file, "q") == 0) || (strcmp(obj_file, "Q") == 0) || (strcmp(obj_file, "exit") == 0)
|| (strcmp(obj_file, "EXIT") == 0) || (strcmp(obj_file, "Exit") == 0) || (strcmp(obj_file, "eXIT") == 0))
{
fclose(src_fp);
return;
}
system("cd .");
obj_fp = fopen(obj_file, "wb");
if(obj_fp == NULL)
{
printf("Object file can't be created!");
getch();
putchar('\n');
printf("Object file:");
obj_file = obj_buf;
scanf("%s", obj_file);
}
else
break;
}while(TRUE);
{
int src_byte;
char cvt_byte; /* Object is the ASCII code */
char wr_buf[100+1];
unsigned char posi;
unsigned char head_flag = 1;
unsigned char i;
unsigned char spec_char_cnt = 0;
unsigned char spec_char2 = 0x00;
unsigned char gr_ch_posi; /* The Greek character positon */
unsigned char len;
printf("Destination file: %s\n", obj_file);
printf("Converts result:\n");
for(i = 0; i < 60; i ++)
putchar(0xC4);
putchar('\n');
while((src_byte=fgetc(src_fp)) != EOF)
{
switch(src_byte)
{
case 0x0D:
case 0x0A:
head_flag = 1;
spec_char_cnt = 0;
if(spec_char2 == '{')
{
fputc(spec_char2, obj_fp);
putchar(spec_char2);
}
spec_char2 = 0x00;
fputc(src_byte, obj_fp);
putchar(src_byte);
break;
case '{':
spec_char2 = src_byte;
break;
case '}':
if(!spec_char2)
{
fputc(src_byte, obj_fp);
putchar(src_byte);
}
spec_char2 = 0x00;
break;
default:
posi = 0;
if(src_byte == '\"')
{
spec_char_cnt ++;
if(spec_char_cnt == 1)
{
fputc('{', obj_fp);
putchar('{');
spec_char2 = 0;
}
else if(spec_char_cnt == 2)
{
spec_char_cnt = 0;
if(head_flag)
{
strcpy(wr_buf, "0x00}");
}
else
{
head_flag = 1;
strcpy(wr_buf, ",0x00}");
}
posi = 6;
spec_char2 = '}';
fputs(wr_buf, obj_fp);
printf("%s", wr_buf);
}
}
else
{
if(spec_char_cnt)
{
/*--- The normal convert procedure start ---*/
if(head_flag) /* Is the head */
head_flag = 0;
else
wr_buf[posi++] = ',';
gr_ch_posi = Chk_Gr_Symbol(src_byte);
if(gr_ch_posi) /* The Greek character */
{
len = strlen(cvt_tbl_obj[gr_ch_posi-1]);
memcpy(&wr_buf[posi], cvt_tbl_obj[gr_ch_posi-1], len);
posi += len;
}
else if((src_byte >/*=*/ 0x20) && (src_byte <= 0x7F)) /* The standard printable character */
{
wr_buf[posi++] = '\'';
wr_buf[posi++] = src_byte;
wr_buf[posi++] = '\'';
}
else /* The other character */
{
wr_buf[posi ++] = '0';
wr_buf[posi ++] = 'x';
cvt_byte = (src_byte>>4) + '0';
if(cvt_byte > '9')
cvt_byte += 7; /* Character 'A' ~ 'F' */
wr_buf[posi ++] = cvt_byte;
cvt_byte = (src_byte&0x0F) + '0';
if(cvt_byte > '9')
cvt_byte += 7; /* Character 'A' ~ 'F' */
wr_buf[posi ++] = cvt_byte;
}
wr_buf[posi ++] = '\0';
fputs(wr_buf, obj_fp);
printf("%s", wr_buf);
/*--- The normal convert procudure start ---*/
}
else
{
if(spec_char2 == '{')
{
fputc(spec_char2, obj_fp);
putchar(spec_char2);
}
spec_char2 = 0x00;
fputc(src_byte, obj_fp);
putchar(src_byte);
}
}
break;
}
}
putchar('\n');
for(i = 0; i < 60; i ++)
putchar(0xC4);
putchar('\n');
}
printf("File convert finish!\n");
fclose(obj_fp);
fclose(src_fp);
}
/*
Checking the Greed character symbol, and return the position if table,
Not the Greek character, return 0
*/
unsigned char Chk_Gr_Symbol(char src)
{
unsigned char i;
for(i = 0; i < CVT_NUM; i ++)
{
if(src == cvt_tbl_src[i])
break;
}
if(i < CVT_NUM)
i ++;
else
i = 0;
return (i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -