c++中FILE*读文件的有关问题
c++中FILE*读文件的问题先看代码吧FILE *pCString readfilename_T(E:\\abc_XXX.dat)for(int i0i2
c++中FILE*读文件的问题
先看代码吧
FILE *p;
CString readfilename=_T("E:\\abc_XXX.dat");
for(int i=0;i<2;i++)
{
readfilename.format(TEXT("E:\\abc_03%d.dat"),i);
fpr=fopen((char*)(LPCTSTR)readfilename,"rb");
}
这里fpr==NULL,然后我调到程序里面,发现readfilename只是个E,不知道为什么,然后输出
wprintf(readfilename);的时候readfilename=E:\abc_000.dat。
这个不知道为什么。求原因。
谢谢~ c++?FILE*
[解决办法]
因为你的工程配置为多字节的,而printf是按照单字节来解析,这样会误把多字节中正常的0x00当成字符串的结束符。
[解决办法]语言单纯点不好么?
又是C 又是c++
FILE *Fp = fopen("E:\\abc_XXX.dat", "rb");
if(Fp == NULL)
{
printf("open failed:%s\n", strerror(errno));
return -1;
}
fread(buf, 1, 100,Fp);
[解决办法]这样处理吧:
_T =TEXT
//VC:
涉及字符串的函数,有3种版本;
其中第2,第3是实现版;
第1个是个宏,
根据字符串的实现版本的不同,
被定义为第2个,或者第3个
//通用版(?其实有点表示怀疑的) MBCS 版 ,UNICODE版
字符 TCHAR char , wchar_t
字符串 LPTSTR==TCHAR*,LPCTSTR ==const TCHAR *, char *,const char * , wchar_t *,const wchar_t *
对应函数 _tfopen ---- fopen , wfopen
FILE *p;
CString readfilename
for(int i=0;i<2;i++)
{
CString temp = readfilename.format(_T("E:\\abc_03%d.dat"),i);
fpr=_tfopen((LPCTSTR)temp,_T("rb"));
.........
}
不过,CString,一般和 CFile,CStdioFile 配合使用。
很少见到,MFC 程序,使用 C流,或者C++流的。
PS:
MFC 不是很待见,C,C++流。
[解决办法]_fputts(CString,FILE *);