C++文件读取和写入时出现问题了。

ifstream inFile;
inFile.open("file_in.txt");
curLineNo=0;
char c[512];
while(!inFile.eof())
{
inFile.getline(c,512,'\n');
curLineNo++;
}

String curLine;//当前行
textBuffer.GetElem(curLineNo,curLine);
curLine.CStr(); ///////////////////////////////就是这样出问题了,说是不能输出。

if(!curLine.Empty()) ///////////////////我测试了一下这个程序,显然curLine是为空的,那么,我打开的文件,要怎么才能输出当前行的字符串呢?
请给我一些说明好吗?

“输出当前行的字符串”的意思 是,我有时候可能要输出第一行的数据,或是第二行的数据。
textBuffer.GetElem(curLineNo,curLine);-------这句话里的curLineNo是为3的,它的意思不是将第三行的数据curLine赋给curLine吗?或者说我直接将curLineNo赋值为1或2或有数据的行,我想做的是让curLineNo表示的那一行的数据赋给curLine变量,然后将curLine变量输出,此时输出的就应该是curLineNo所表示行的数据了。

上面要怎么做到呢?

数据为:(.txt)
aassdsfe
fdf
gfdgg

共有三行。

请大家帮帮忙,我会加分的。

问题在于while(!inFile.eof())语句,里面没有break;语句,应该在while循环体中(是循环体中不是while的条件语句!inFile.eof()的错)加上读到了想要的内容就break跳出循环的判断语句就可以了,我没明白到你的“要怎么才能输出当前行的字符串呢” 这句话是啥意思,因此条件语句你就自已看着加就行了。
原因:
你的程序读到的不是第1行内容,而是最后一行内容,因为会一直读到让eof()函数反回1为止,而eof反回1,则文件已到末尾了。而最后一行与倒数第二行之间可能根本就没有内容,也就是你程序中的变量c可能只读到了一个回车换行符,所以程序输不出东西。

评论很多定符不能打,我插
定义二维数组来接收文本的内容吧
比如:
char c[10000][1000];
while(!inFile.eof())
{
inFile.getline(c[curLineNo],512,'\n');
curLineNo++;
}

其中c[0]就是第一行的内容,c[1]是第1行.....
可以试试。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-21
FILE* fp = fopen(szFileName,"r");
if (fp)
{
char sline[1000] = {0};
while(fgets(sline,sizeof(sline),fp) > 0)
{
//输出
printf("%s\n",sline);
memset(sline,0,sizeof(sline));
};
fclose(fp);
}追问

可以给说明一下不?

追答

FILE* fp = fopen(szFileName,"r");//以只读的方式打开文件
if (fp)//如果文件打开成功
{
char sline[1000] = {0};
while(fgets(sline,sizeof(sline),fp) > 0)//如果读取文件的一行成功(仅限文本文件),如果读取一行失败或长度=0则跳出循环
{
//打印输出
printf("%s\n",sline);
memset(sline,0,sizeof(sline));//清空变量
};
fclose(fp);//关闭文件
}

C++文件读取和写入时出现问题了。
问题在于while(!inFile.eof())语句,里面没有break;语句,应该在while循环体中(是循环体中不是while的条件语句!inFile.eof()的错)加上读到了想要的内容就break跳出循环的判断语句就可以了,我没明白到你的“要怎么才能输出当前行的字符串呢” 这句话是啥意思,因此条件语句你就自已看着加就行了。原...

c++ 向不纯在的文件夹写入文件时会失败,求解决办法
1.首先检测文件夹是否存在,可以使用windows的api:include <shlwapi.h>#pragma comment(lib,"shlwapi.lib")int main(){ BOOL b = PathFileExists(L"D:\\\\yusd\\\\"); if (b) { } }2. 如果不存在,则创建文件夹BOOL b = CreateDirectory(L"D:\\\\yusd"), NULL);if (!b && (Get...

C++的文件读写,为什么这个程序运行有时候对,有时候又会出错?
你这么做肯定是有问题的,sizeof(pe) 或sizeof(People) 获取的并不是写入实际数据的长度, 而只是People的长度, 这个长度是固定的。正确的做法可以通过两种方式来处理:1、 通过重载流输出\/输入流 ostream& operator << (ostream& os, People& p) { \/\/ people 转换成公有成员, 或在类中friend...

C++中读文件格式错误如何捕获及处理?
这样写,编译就通不过,会显示语法错误,自己改正。file >> a[0]; 执行时错误 可以通过 它的基类 函数 ios::fail(), ios::bad(), ios::eof() 判断。

C++中写入位置是发生访问冲突像这种错误要怎么找?
1、圆括号少打。2、花括号少打。3、双引号打在了括号外面。4、括号后未加分号。5、然后选中菜单上的文件,新建。6、在弹出的对话框中选择文件->c++ Source File->文件名:a1.c。7、新建了一个a1.c的工程。8、然后输入代码,点击编译没有错误。9、点击组建就会出现错误。10、点开菜单栏的组建...

c++中fstream文件操作类的问题,向一个文件中输入数据总是不成功。
你的问题是找错地方了。你不应该是在编译器的目录下创建文件,而应该是找到项目文件目录,然后在这个目录下创建一个f1.dat 或者f1.txt,当然也可以不创建,程序会自动生成的。原理是:当你运行你的那个程序的时候,编译器会先在生成的项目的文件夹中查找该文件,如果没有,会生成一个,然后进行读写...

C++读写文件乱码
using namespace std;int main(){ string name="file.txt";string incontent="a";string outcontent;cin.clear();cout.clear();ofstream file_in(name.c_str());file_in<<incontent; \/\/write to file file_in.close();ifstream file_out(name.c_str());if(!file_out)cout<<"fuck";...

C++文件写入问题,此代码为什么写入文件会是乱码
记事本这样的bug很多,比如记事本新建一个文本,打开以后输入:联通 这两个字, 保存 ,关闭记事本。 再打开,你看看变成什么了?有一个开玩笑的说法是因为中国联通把微软中国得罪了……记事本保存的时候,默认使用ansi编码 但是用ansi编码呢,联通这两个字的开头正好是:fffe... 这样的,于是再打开...

运行程序的时候出现C++错误怎么办
运行程序的时候出现C++错误这样的问题一般是因为DLL文件出错或者VC运行库没有安装导致的,解决方法 一、下载VC运行库进行安装修复,修复后再进行测试。二、以管理员身份运行命令提示符,打开开始菜单,搜索cmd。在命令提示符上单击右键,选择“以管理员身份运行”;在命令提示符中输入以下命令:for%iin(%...

C++ 对新创建的文件写入失败
标志位fail()=true,你重新OPEN但是没有调用clear重置标志位。is_open只判断了打开了文件,如果标志位没重置,依然会写入失败 在outfile.open(KeyExp_txt, ios_base::out);上面加入outfile.clear()即可,最后建议你最好在clear前面再加上outfile.close(),先关闭再重新打开,防止意外 ...

相似回答
大家正在搜