怎样从一个 .txt 文件中每次读一行字到buff中? 如题,请给出示例代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写,不要使用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; } 1、用getline:#include <iostream>#include <string>#include <fstream>using namespace std;void readfile(){ string line; ifstream in("c:\\test.txt"); while(getline(in,line)) { ... }}2、用fgets:#include "stdio.h"void readfile(){ FILE *stream; char line[100]; if( (stream = fopen( "fgets.c", "r" )) != NULL ) { if( fgets( line, 100, stream ) == NULL) printf( "fgets error\n" ); else printf( "%s", line); fclose( stream ); }3、用CStdioFile类:CStdioFile f;char buf[100];f.ReadString( buf, 99 ); void CSetEx::ReadLine(FILE *pFile, CString &line){ char buf[256]; line = ""; while(fgets(buf, 256, pFile){ line += buf; if(strchr(buf, '\n')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即为一行 } } CStdioFile file;CString filename;char buff[254];file.open(filename,CFile::moderead);file.readstring(buff,254); 用CStdioFile::ReadString就行了。就是一次读一行。 用CStdioFile::ReadString就行了。就是一次读一行。 用CStdioFile::ReadString就行了。就是一次读一行。 rabo(不哭死人) 你的病毒还没有杀死啊 推荐使用pomelowu(羽战士) 的方法,是标准C++的方法,MFC封装的CFile,CStdioFile都不好。不过记住要包含几个特殊的头文件。 linxy2002(阿郎)不晓得是啥子东西在做怪啊。没毒啊。 linxy2002(阿郎)不晓得是啥子东西在做怪啊。没毒啊。 linxy2002(阿郎)不晓得是啥子东西在做怪啊。没毒啊。 rabo(不哭死人) 呵呵,真是的 怎么读取txt的内容 打印预览的问题 100分:请教文件操作错误提示“对 一未命名文件 的存取被拒绝” 怎样控制能使窗口大小不能变动 com中函数的参数可以传递结构体吗? 谁有XMLSPYEntComplete2004的Key-code,急用!! 两个SPI软件的冲突问题,急切地请大家帮忙 如何通过Vc编程调用SQL server数据库多个表格的问题 我调用ORACLE存储过程后如何取得返回值呢??? 简单问题.....初学者傻傻的问. 鼠标敏感的窗口:鼠标移到 窗口的子窗口上也会产生(WM_MOUSELEAVE),如何解决? 文件控制
================================================== 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;
}
#include <iostream>
#include <string>
#include <fstream>
using namespace std;void readfile()
{
string line;
ifstream in("c:\\test.txt");
while(getline(in,line))
{
...
}
}2、用fgets:
#include "stdio.h"
void readfile()
{
FILE *stream;
char line[100]; if( (stream = fopen( "fgets.c", "r" )) != NULL )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\n" );
else
printf( "%s", line);
fclose( stream );
}
3、用CStdioFile类:
CStdioFile f;
char buf[100];f.ReadString( buf, 99 );
{
char buf[256];
line = "";
while(fgets(buf, 256, pFile){
line += buf;
if(strchr(buf, '\n')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即为一行
}
}
CString filename;
char buff[254];
file.open(filename,CFile::moderead);
file.readstring(buff,254);
你的病毒还没有杀死啊
呵呵,真是的