VC++6.0实现文本格式的转换保存

第一步:

建立mfc工程

第二步: 布置界面

第三步: 编辑按钮

下面是  选择对账文本并转换的代码实现

void CReorderDataDlg::OnButton1()
{
    char sum_text[255], tmp[512];
    long i;
    FILE *fp_s, *fp_t;
    char srcFileName[255], tagFileName[255];
    char err_msg[255], szReadBuff[1024], szResultBuff[1024];

    // TODO: Add your control notification handler code here
    CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
        "",//默认的打开文件的类型
        NULL,//默认打开的文件名
        OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,//打开只读文件
        "*(*.*)|*.*||");
    //"文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*||");
    if(dlg.DoModal()==IDOK)
    {
        CString m_FilePath = dlg.GetPathName();////////取出文件路径
        CString  m_path;
        m_path=m_FilePath;//将文件的路径放入m_path 

        memset( srcFileName, 0x00, sizeof(srcFileName) );
        strcpy( srcFileName, m_path.GetBuffer(255));

        UpdateData(FALSE);
    }
    else
        return;

    memset( tagFileName, 0x00, sizeof(tagFileName));
    memcpy( tagFileName, srcFileName+strlen(srcFileName)-8, 8 );
    strcat(  tagFileName, ".txt");
 //  AfxMessageBox( tagFileName );

    memset( err_msg, 0x00, sizeof(err_msg));
    fp_s = fopen( srcFileName, "r");
    if ( fp_s == NULL)
    {
        sprintf( err_msg, "FILE[%s] OPEN FAILED!", srcFileName);
        return;
    }

    fp_t = fopen( tagFileName, "w");
    if ( fp_t == NULL)
    {
        sprintf( err_msg, "FILE[%s] OPEN FAILED!", tagFileName);
        return;
    }

    i=0;
    while( !feof(fp_s) )
    {
        memset( szReadBuff, 0x00, sizeof(szReadBuff));
        memset( szResultBuff, 0x00, sizeof(szResultBuff));
        fgets( szReadBuff, 512, fp_s );
        if ( feof(fp_s)) break;

        str_alltrim( szReadBuff );
    //    AfxMessageBox( szReadBuff );
        if (szReadBuff[0]< 0x30 || szReadBuff[0] >0x39 )
        {
            continue;
        }

        //处理成标准的清算文件
        /*交易日期*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field(  szReadBuff, FLAG, 11, tmp  ) )
        {
            strcat( szResultBuff, tmp );
            strcat( szResultBuff, "    " );
        }

        /*交易时间*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field(  szReadBuff, FLAG, 12, tmp  ) )
        {
            char value_tmp[12];
            memset( value_tmp,0x00, sizeof(value_tmp) );
            memcpy( value_tmp, tmp, 6 );
            strcat( szResultBuff, value_tmp );
            strcat( szResultBuff, "    " );
        }

        /*终端号*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field(  szReadBuff, FLAG, 3, tmp  ) )
        {
            strcat( szResultBuff, tmp );
            strcat( szResultBuff, "    " );
        }

        /*卡号--要特殊处理*/
        char tmp_str[40];
        memset( tmp, 0x00, sizeof(tmp) );
        memset( tmp_str, 0x00, sizeof(tmp_str) );
        if( !str_find_field(  szReadBuff, FLAG, 1, tmp  ) )
        {
            sprintf( tmp_str, "%-19.19s", tmp );
            strcat( szResultBuff, tmp_str );
            strcat( szResultBuff, "    " );
        }

        /*金额*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field( szReadBuff, FLAG, 7, tmp ) )
        {
            strcat( szResultBuff, tmp );
            strcat( szResultBuff, "    " );
        }

        /*参考号*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field(  szReadBuff, FLAG, 10, tmp  ) )
        {
            strcat( szResultBuff, tmp );
            strcat( szResultBuff, "    " );
        }

        /*交易类型*/
        memset( tmp, 0x00, sizeof(tmp) );
        if( !str_find_field(  szReadBuff, FLAG, 6, tmp  ) )
        {

            if( strcmp( tmp, "0103") )
            {
                strcat( szResultBuff, "退货" );
                strcat( szResultBuff, "    " );
            }
            else
            {
                strcat( szResultBuff, "消费" );
                strcat( szResultBuff, "    " );
            }
        }

        /*发卡行*/
        strcat( szResultBuff, "银联" );
        strcat( szResultBuff, "\n");
        fputs( szResultBuff, fp_t );
        i++;

        memset( sum_text, 0x00, sizeof(sum_text));
        sprintf( sum_text, "正在处理第%d笔记录",i );

        GetDlgItem(IDC_STATIC)->SetWindowText(sum_text);
        UpdateData(FALSE);

    }

    fclose(fp_s);
    fclose(fp_t);
    sprintf( sum_text, "已处理%d笔,处理完成",i );
    GetDlgItem(IDC_STATIC)->SetWindowText(sum_text);
    UpdateData(FALSE);

    return;

}

其中str_find_fild函数通过定义实现

class CReorderDataDlg : public CDialog

{

// Construction

public:

CReorderDataDlg(CWnd* pParent = NULL);// standard constructor

//int change_file( char *filein, char *fileout );

int str_find_field( char *buf, char *delimer, int fld_no, char *field );

具体实现为

int CReorderDataDlg::str_find_field(  char *buf, char *delimer, int fld_no, char *field )
{
	char	*p1, *p2, ch;
	int	i;

	p1 = buf;
	for( i=0;i<fld_no-1;i++ )
	{
		p1 = strstr( p1, delimer );
		if( !p1 )	/* 没有找到 */
			return -1;
		p1 += strlen( delimer );
	}

	p2 = strstr( p1, delimer );
	if( !p2 )
		strcpy( field, p1 );
	else
	{
		ch = *p2;
		*p2 = 0;
		strcpy( field, p1 );
		*p2 = ch;
	}

	str_alltrim(field);

	return 0;
}

  

void CReorderDataDlg::OnButton1() {char sum_text[255], tmp[512];long i;FILE *fp_s, *fp_t;char srcFileName[255], tagFileName[255];char err_msg[255], szReadBuff[1024], szResultBuff[1024];
// TODO: Add your control notification handler code hereCFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框 "",//默认的打开文件的类型 NULL,//默认打开的文件名 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,//打开只读文件 "*(*.*)|*.*||");//"文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*||");if(dlg.DoModal()==IDOK)   { CString m_FilePath = dlg.GetPathName();////////取出文件路径 CString  m_path; m_path=m_FilePath;//将文件的路径放入m_path memset( srcFileName, 0x00, sizeof(srcFileName) );strcpy( srcFileName, m_path.GetBuffer(255));UpdateData(FALSE);     }elsereturn;
memset( tagFileName, 0x00, sizeof(tagFileName));memcpy( tagFileName, srcFileName+strlen(srcFileName)-8, 8 );    strcat(  tagFileName, ".txt"); //  AfxMessageBox( tagFileName );
memset( err_msg, 0x00, sizeof(err_msg));fp_s = fopen( srcFileName, "r");if ( fp_s == NULL){sprintf( err_msg, "FILE[%s] OPEN FAILED!", srcFileName);return;}
fp_t = fopen( tagFileName, "w");if ( fp_t == NULL){sprintf( err_msg, "FILE[%s] OPEN FAILED!", tagFileName);return;}
i=0;while( !feof(fp_s) ){memset( szReadBuff, 0x00, sizeof(szReadBuff));memset( szResultBuff, 0x00, sizeof(szResultBuff));fgets( szReadBuff, 512, fp_s );if ( feof(fp_s)) break; str_alltrim( szReadBuff );//AfxMessageBox( szReadBuff ); if (szReadBuff[0]< 0x30 || szReadBuff[0] >0x39 ){continue;}
//处理成标准的清算文件/*交易日期*/memset( tmp, 0x00, sizeof(tmp) );if( !str_find_field(  szReadBuff, FLAG, 11, tmp  ) ){strcat( szResultBuff, tmp );strcat( szResultBuff, "" );}/*交易时间*/memset( tmp, 0x00, sizeof(tmp) );        if( !str_find_field(  szReadBuff, FLAG, 12, tmp  ) ){char value_tmp[12];memset( value_tmp,0x00, sizeof(value_tmp) );memcpy( value_tmp, tmp, 6 );strcat( szResultBuff, value_tmp );strcat( szResultBuff, "" );}        /*终端号*/memset( tmp, 0x00, sizeof(tmp) );        if( !str_find_field(  szReadBuff, FLAG, 3, tmp  ) ){strcat( szResultBuff, tmp );strcat( szResultBuff, "" );}
/*卡号--要特殊处理*/char tmp_str[40];memset( tmp, 0x00, sizeof(tmp) );memset( tmp_str, 0x00, sizeof(tmp_str) );        if( !str_find_field(  szReadBuff, FLAG, 1, tmp  ) ){sprintf( tmp_str, "%-19.19s", tmp );strcat( szResultBuff, tmp_str );strcat( szResultBuff, "" );}/*金额*/memset( tmp, 0x00, sizeof(tmp) );        if( !str_find_field( szReadBuff, FLAG, 7, tmp ) ){strcat( szResultBuff, tmp );strcat( szResultBuff, "" );}/*参考号*/memset( tmp, 0x00, sizeof(tmp) );if( !str_find_field(  szReadBuff, FLAG, 10, tmp  ) ){strcat( szResultBuff, tmp );strcat( szResultBuff, "" );}/*交易类型*/memset( tmp, 0x00, sizeof(tmp) );if( !str_find_field(  szReadBuff, FLAG, 6, tmp  ) ){if( strcmp( tmp, "0103") ){strcat( szResultBuff, "退货" );strcat( szResultBuff, "" );}else{strcat( szResultBuff, "消费" );strcat( szResultBuff, "" );}}/*发卡行*/strcat( szResultBuff, "银联" );strcat( szResultBuff, "\n");        fputs( szResultBuff, fp_t );i++;memset( sum_text, 0x00, sizeof(sum_text));sprintf( sum_text, "正在处理第%d笔记录",i );
GetDlgItem(IDC_STATIC)->SetWindowText(sum_text);UpdateData(FALSE);}

fclose(fp_s);fclose(fp_t);sprintf( sum_text, "已处理%d笔,处理完成",i );GetDlgItem(IDC_STATIC)->SetWindowText(sum_text);UpdateData(FALSE);
return;
}

时间: 2024-07-31 14:35:15

VC++6.0实现文本格式的转换保存的相关文章

将psd格式批量转换成jpg或png格式(C#自制软件)

此项目基于.net framework 4.0 将psd格式批量转换成jpg或png格式. 链接:https://pan.baidu.com/s/16IEjX0sHaY9H3Ah7mv6IPQ 提取码:c948 原文地址:https://www.cnblogs.com/alpha-w/p/10797935.html

PDF表格到Excel格式的转换系统-RainbowPDF2.0

证券公司处理上市公司PDF会计报表的有力工具 高精度将PDF表格到Excel格式的转换系统 解决证券公司统计上市公司的会计报表时,PDF报表的数据输入问题! 目前上市公司的会计报表全部以PDF格式上报到交易所,并且为了安全,实施了加密.禁止修改.禁止打印.禁止文字抽取等各种保护措施,给证券公司带来了很大困难,统计上市公司的数据只好重新把数据用手工方式输入一遍. 北京红樱枫软件有限公司的RainbowPDF软件解决了您的大麻烦,利用它可以毫不费劲的把PDF中的表格数据自动转换到Excel中.而且表

CSS 文本格式:对齐方式、文本修饰、文本转换、文本缩进

CSS 文本格式 文本颜色 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如: red 参阅 CSS 颜色值 查看完整的颜色值. 一个网页的背景颜色是指在主体内的选择: 实例 body{color:red;}h1{color:#00ff00;}h2{color:rgb(255,0,0);} 对于W3C标准的CSS:如果你定义了颜色属性,你还必须定义背景色属性. 文本的对齐方式

如何把Excel中的某列数值如何转换成文本格式,且兼容性最好?

假设要把下方A列数值变成文本格式.有多种方法,其中下方的方法兼容性最好: 第一步:选择 A 列,然后,运行菜单 数据/分列... 命令,如下图: 第二步:默认 下一步: 第三步:默认 下一步: 第四步:列数据格式/文本 ,点击 完成. 第五部:完成的如下图,A列所示:每个数字左上方有个 绿色小三角,表明是 文本 格式,兼容性最好.

linux文本格式转换

问题:在linux环境下面执行SH的可执行文件. -bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory 解决办法: 1.查看该文件  vim start.sh   不是编辑模式直接输入:set ff     查看弹出的界面  fileformat=dos  说明文本格式不对 直接set ff  = unix   就可以了 原文地址:https://www.cnblogs.com/byao-8816/p/9

[转]Microsoft Platform SDK 选择及在vc++6.0中的配置

Windows Platform SDK Download Sites: Windows Server 2003 PSDK February 2003 Edition,可以和VC6一起使用.并支持各种目标OS的最后一个版本的SDK. This edition of the SDK supports development for the following platforms: Windows Server 2003 Windows Advanced Server, Limited Editio

php将标准字符串格式时间转换成unix时间戳_strtotime

php 将标准字符串格式时间转换成unix时间戳的函数为:strtotime函数(PHP 4, PHP 5). strtotime函数详细参考: strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳. 函数格式说明: int strtotime ( string $time [, int $now ] ) 本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 n

浅谈:字符串、时间格式的转换

字符串与时间格式的转换 -----常用的方法:1.拼接字符串的格式[String类型的一些常用的方法]: 2.simpledateformat格式 3.Date格式 1.SimpleDateFormat的用法: 1.1常用的方法: format(Date);将给定Date格式化为日期/时间字符串,并将结果添加到给定的StringBuffer parse(String);解析字符串文本,生成Date类型 2.Date的用法: 3.String的用法: 3.输出当前的时间: Date d = new

ASP:GB2312格式文本文件转换成UTF-8格式

'-------------------------------------------------'函数名称:gb2utf_file'作用:利用AdoDb.Stream对象来把GB2312格式文本文件转换成UTF-8格式'----------------------------------------------------Function gb2utf_file(utffilename)Dim gb2utf_1,gb2utf_2,gb2utf_array,gb2utf_igb2utf_1=L