说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基础问题,帮忙看一小段代码

编辑:说三道四文库 发布时间:2018-09-19 01:47
HTML文档下载 WORD文档下载 PDF文档下载
文本文件commset.txt格式如下:
8888
21
9
123456789
3
abc
先想将其读到字符数组中,代码如下
                  fo=fopen("C:\\commset.txt","rb");
                  fscanf(fo,"%d",&centerport);
fscanf(fo,"%c%c",&ctemp,&ctemp);
fscanf(fo,"%d",&ftpport);
fscanf(fo,"%c%c",&ctemp,&ctemp);
          fscanf(fo,"%d",&iNo);   //读出长度
fscanf(fo,"%c%c",&ctemp,&ctemp);
for(i=0;i<iNo;i++)
{
fscanf(fo,"%c",&szusername[i]);
}
szusername[i]=0x00;
                  fscanf(fo,"%d",&iNo);//读出长度

fscanf(fo,"%c%c",&ctemp,&ctemp);
for(i=0;i<iNo;i++)
{
fscanf(fo,"%c",&szpassword[i]);
}
这段程序别的都狠清楚,只有fscanf(fo,"%c%c",&ctemp,&ctemp)这一句的作用不是狠明白,我想作用可能是跳过回车字符,但是回车是一个字符,为何读入两个字符到ctemp,望指点

szpassword[i]=0x00;
是两个字符一个表示换行,一个表示行结束
/0x0d/0x0a
以binary方式打开文件你就能看清楚啦
如果改为fo=fopen("C:\\commset.txt","r");的话是不是只需要fscanf(fo,"%c",&ctemp)就可以了???
其中包括了回车换行两个字符
读取行吧,呵呵
自己写,不要使用MFC的类,MFC很多意外情况。
==================================================

FILE *pSourFile; //指向源文件
CString sSourLine=""; //从源文件中取出的一行

pSourFile = fopen(sFileName,"rt");
if(pSourFile==NULL) {
AfxMessageBox("源文件打开失败!");
return false;
}
while(!feof(pSourFile)){
ReadLine(pSourFile, sSourLine);//读一行
}
}
//读取文件的一行
void CSetEx::ReadLine(FILE *pFile, CString &line)
{
line="";
char ch;
int pos=0;
while(!feof(pFile)){
//Read(&ch,1);
ch = fgetc(pFile);
if(ch=='\r'||ch=='\n')break;
line+=ch;
pos++;
if(line.Find("", 0))
{
ftell(pFile);
}
}
line.TrimRight('\r'); 
line.TrimRight('\n'); 
line.TrimRight('\r'); 
line.TrimRight(0xff); //过滤文件结束符
return;

}

或者:
CStdioFile file;
if(file.Open(_T(m_sAppPath+"\\text"),CFile::modeReadWrite))
    {
CString sss;
DWORD o=0;
int ol=0;
while(file.ReadString(sss))
{
if(find.FindFile(m_sAppPath+"\\text"))
m_cbBkGround.AddString(sss);//sss即为一行
}
}

请问::::
如果改为fo=fopen("C:\\commset.txt","r");的话是不是只需要fscanf(fo,"%c",&ctemp)就可以了???
up
二进制,一个回车,一个换行
ding
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘