此程序是把数字转换为大写汉字!!请教了ymbymb(毛病大哥)和szclm(IT的民工) 我加了一个主程序来运行,可是出现了一个错误,请高手们指点一二!谢了!
#include "iostream.h"
#include "afx.h"void  TOCUPER(double  RMB,char  *RMBHZ);void main()
{
  double n;
  char  str[];
  memset(str,0,100);
  cout<<"请输入要转换的数字";
  cin>>n;
  TOCUPER(n,str);
  cout<<str<<endl;
}void  TOCUPER(double  RMB,char  *RMBHZ)  
{  

CString  snum  =    "零壹贰叁肆伍陆柒捌玖  ";  
CString  stmp1  =    "元拾佰仟万拾佰仟亿拾佰仟  ";  
CString  stmp2  =    "角分  ";  
CString  sout;  

char  buf[20];  
sprintf(buf,    "%d",  (int)RMB);  

int  nLen  =  strlen(buf);

BOOL isZero = FALSE;
for(int  i  =  nLen  -  1;  i    >=  0;  i--)  
{  
CString  tmp;  

tmp  =  snum.Mid((buf[i]  -  '0')  *  2,  2);  

if(buf[i]  !=  '0')
{
tmp  +=  stmp1.Mid((nLen  -  1  -  i)*2,  2); 

isZero = FALSE;
}

else if( (nLen  -  1  -  i)*2 == 8 || (nLen  -  1  -  i)*2 == 16 )
{
sout  =  stmp1.Mid((nLen  -  1  -  i)*2,  2) + sout; 
}

if( !isZero )

sout  =  tmp  +  sout; 
if( buf[i] == '0' )
isZero = TRUE;
}

if( sout.Find( "亿万" ) != -1 )
sout.Replace( "亿万", "亿" );

sprintf(buf,    "%02d  ",  (int)((RMB  -  (int)RMB)  *  100  +  0.5));  

if(buf[1]  ==  '0')  
{  

buf[1]  =  0;
  
if(buf[0]  ==  '0')  buf[0]  =  0;  
}  

nLen  =  strlen(buf);  

for(i  =  0;  i    <  nLen;  i++)  
{  
CString  tmp;  
tmp  =  snum.Mid((buf[i]  -  '0')  *  2,  2);  
if(buf[i]  !=  '0')  tmp  +=  stmp2.Mid(i*2,  2);  
sout  +=  tmp;  
}

if( nLen == 0 )
{
//加上一个整字
sout  +=    "整  ";  
}

memcpy(RMBHZ,  sout,  sout.GetLength());  
RMBHZ[sout.GetLength()]  =  0;  
}  或者把主函数换成
void main()
{
  double RMB = 3423434.45;
  char RMBHZ[100]; 
  TOCUPER(RMB, RMBHZ);
}
都会出现这样的问题:
Link......
nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external symbol_endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external 
symbol_beginrhreadex
Debug/TOCUPER.exe:fatal error LNK1120:2 unresolved externals
Error executing link.exe
请教如何解决!!!!谢谢!

解决方案 »

  1.   

    在include后加上这个#ifdef _DEBUG
    #pragma comment (linker, "/MTd")
    #else
    #pragma comment (linker, "/MT")
    #endif
      

  2.   

    要不就去 project settings 里面将Single Thread Library对应的换成Multi Thread Library (Debug)或Multi Thread Dll Library (Debug)
      

  3.   

    str没有分配空间;照下面改
    void main()
    {
      double n;
      char  str[100];
      memset(str,0,100);
      cout<<"请输入要转换的数字";
      cin>>n;
      TOCUPER(n,str);
      cout<<str<<endl;
    }
      

  4.   

    简单的方法是写个结构
    1 2 3 4 5 6 7 8 9 0
    壹.................一个结构
    struct SAMPLE
    {
    byte nuber;
    char hz[2];
    }
    做一个大数组
    SAMPLE[10]并始化。用起来还简单。
      

  5.   

    另外在你的project->setting->general 中选择Use MFC in a static library