📄 takechar.c
字号:
/****************************************************
Takechar V1.00 Takes out Chinese characters from source code.
Copyright(C) 2007 ShiQizheng(sales@newexperience.51.net)
http://newexperience.51.net
All rights reserved.
Released under GPL. Please see "gpl.txt" for details.
****************************************************/
#include "takechar.h"
#include "takechar_c.h"
#include "takechar_asm.h"
#include "charchain.h"
int ReadOneByte( FILE *pFile, char *pChar)
{
if ( feof( pFile))
{
return RESULT_FILE_EOF;
}
if ( !fscanf( pFile, "%c", pChar))
{
return RESULT_FILE_ERROR;
}
return RESULT_DONE;
}
void Log( char *szFormat,...)
{
va_list vp;
char szTemp[2048];
va_start( vp, szFormat);
vsprintf( szTemp,szFormat,vp);
va_end(vp);
strcat( szTemp, "\n");
printf( szTemp);
}
void Help()
{
printf( "NewExperience Takechar V1.00 Takes out Chinese characters from source code.\n");
printf( "Copyright(C) 2007 ShiQizheng(sales@newexperience.51.net)\n");
printf( "http://newexperience.51.net\n");
printf( "All rights reserved.\n");
printf( "Build on %s %s\n", __TIME__, __DATE__);
printf( "\n");
printf( "Usage: takechar <source list file> <output file>\n");
}
void ReverseString( char *p1, char *p2)
{
char ch;
while (p1 <= p2)
{
ch = *p1; *p1 = *p2; *p2 = ch;
p1++; p2--;
}
}
void Upper( char *p)
{
while ( *p)
{
*p = toupper( *p);
p++;
}
}
int main( int argc, char **argv[])
{
CHARCHAIN *pChain;
FILE *pFile;
char szFileName[1024];
char szReversedFileName[1024];
char cChar;
char *pszLine;
int iLoopFlag;
if ( argc != 3)
{
Help();
return 1;
}
pFile = fopen( ( const char *)argv[1], "rb");
if ( !pFile)
{
Log( "ERROR: Can not open source list file:%s", argv[1]);
return 1;
}
pChain = 0;
while (1)
{
memset( szFileName, 0, sizeof( szFileName));
pszLine = szFileName;
iLoopFlag = 1;
while ( ( !feof( pFile)) && ( iLoopFlag))
{
if ( !fscanf( pFile, "%c", &cChar))
{
Log( "ERROR: Can not read source list file:%s", argv[1]);
return 1;
}
switch ( cChar)
{
case 0x0d:
break;
case 0x0a:
iLoopFlag = 0;
break;
default:
*pszLine = cChar;
pszLine ++;
break;
}
}
memcpy( szReversedFileName, szFileName, sizeof( szFileName));
if ( strlen( szReversedFileName) > 1)
{
ReverseString( szReversedFileName, &szReversedFileName[strlen( szReversedFileName) - 1]);
}
Upper( szReversedFileName);
if ( strncmp( szReversedFileName, "C.", 2) == 0)
{
Log( "Processing as C file:%s", szFileName);
TakeCharFromFile_C( szFileName, &pChain);
}else
if ( strncmp( szReversedFileName, "H.", 2) == 0)
{
Log( "Processing as C file:%s", szFileName);
TakeCharFromFile_C( szFileName, &pChain);
}else
if ( strncmp( szReversedFileName, "S.", 2) == 0)
{
Log( "Processing as ASM file:%s", szFileName);
TakeCharFromFile_ASM( szFileName, &pChain);
}else
if ( strncmp( szReversedFileName, "MSA.", 4) == 0)
{
Log( "Processing as ASM file:%s", szFileName);
TakeCharFromFile_ASM( szFileName, &pChain);
}else
if ( strncmp( szReversedFileName, "CNI.", 4) == 0)
{
Log( "Processing as ASM file:%s", szFileName);
TakeCharFromFile_ASM( szFileName, &pChain);
}else
{
Log( "Unknown file type, skipping:%s", szFileName);
}
if ( feof( pFile))
{
break;
}
}
CharChain_WriteToFile( pChain, ( char*)argv[2]);
CharChain_Free( pChain);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -