描述:
初学VC就遇到了修改一个别人写好的程序的任务,也幸运也不幸。对于数据类型转换、指针等非常模糊。有如下两个问题困扰了我好几天了:
(1)我在打开一个文本文件时,用到了fopen(const char*,"r")这样的方法。
其中,文件名和路径是传近来的LPTSTR类型参数,可是fopen这儿需要char *型的参数,我如何才能将LPTSTR转换为char*型?
比如:
LPTSTR path="D:";
LPTSTR filename="text.txt";
TCHAR * fullname;
fopen(fullname);
就是如何让fullname="D:\\text.txt";?
(2)从文本文件中读出来数据并放到char变量里面),我用下面的代码将其转换为SQL语句(TCHAR vCmd[MAX_PATH]型),但调试的时候总是有错误:
#include <stdio.h>
#include <string>
#include <TCHAR.H>
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfADO")
BOOL ReadFile(LPTSTR filename)
......
FILE* pFile;
pFile = fopen(*tFileName, "r");
if(pFile == NULL) return FALSE;
int bRead=1;
while((c=fgetc(pFile)) != EOF)
{
bRead=1;
//每一行生成一个SQL语句,并执行
if(c=='\n')
{
*t='\n';
strcat(m,t);
wsprintf(vCmd,
_T("INSERT INTO GroupCustomerOweState (CompID,Type,ChangeTime) Values('%s)")
,*m);
//执行SQL
memset(m,0,255);
*m='\0';
continue;
}
//将数据中的分隔符(空格)转换为SQL语句中的,号。
if(c==' ')
{
*t=',';
*(t+1)='\0';
strcat(m,t);
continue;
}
*t=c;
*(t+1)='\0';
strcat(m,t);
}