#include "fstream"
#include "string"
using namespace std;
int MAX_LENGTH = 3;
const int INCRESEMENT = 2;
int COUNT = 0; //Count the amount of the data
struct ReadData
{
int data;
ReadData *next;
};
void ArraySort(int a[], int number); //Sort function
void InsertNumber() ; //Insert function
void main()
{
int *Array = new int[MAX_LENGTH];
int ntestnumber = 0;
cout << "Please input your number,input -1 to exit"<<endl;
cin >> ntestnumber;
while (ntestnumber != -1 )
{
Array[COUNT] = ntestnumber; COUNT++;
if (COUNT == MAX_LENGTH)
{
MAX_LENGTH += INCRESEMENT;
int *p = new int[MAX_LENGTH];
for (int i = 0; i < COUNT; i++)
{
p[i] = Array[i];
}
delete []Array;
Array = p;
}
cin>>ntestnumber;
}
ArraySort(Array, COUNT); //order the data
ofstream out_file;
out_file.open("a.txt", ios::out);
if (!out_file)
{
cerr<<"Open failure,exit the task"<<endl;
exit(-1);
}
for (int i = 0; i < COUNT; i++)
{
out_file<<Array[i]<<" ";
}
out_file.close();
delete []Array;
InsertNumber();
}
//Order data from small to big
void ArraySort(int *pointer, int number)
{
for (int i = 1; i <= number-1; i++) {
for (int j = 0; j < number-i; j++) {
if (pointer[j] > pointer[j+1])
{
int temp = pointer[j];
pointer[j] = pointer[j+1];
pointer[j+1] = temp;
}
}
}
}
void InsertNumber()
{
ifstream in_file;
in_file.open("a.txt", ios::in);
if (!in_file)
{
cerr<<"Open error,exit the task"<<endl;
exit(-1);
}
ReadData head; //create a node before the head node
head.data = 0;
head.next = NULL;
ReadData *p = NULL;
ReadData *q = &head;
int n_data;
while (!in_file.eof()) {
in_file >> n_data;
p = new ReadData;
p->data = n_data;
p->next =NULL;
q->next = p;
q = p;
head.data++;
}
p = &head;
while (p->next)
{
p = p->next;
cout << p->data<<endl;
}
in_file.close();
当输入1 3 4 2 四个数十时,输出InsertNumber()函数会将最后一个数据读两遍,为什么啊,我使用了while(in_file>>n_data){},这方法能行,但是想请问高手那个为什么不行啊
C++怎么用eof判断txt文件到文件结尾了没
while (\/*你要读取的内容*\/!=EOF)比如while (scanf("%d",&n)!=EOF)EOF 计算机术语,缩写通常为EOF(End Of File),在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件...
请问C++怎么读到行结束和文件结束?
c++中有定义常量EOF作为文件尾 ifstream ifs("1.txt");char ch;while ((ch=ifs.get()) && ch!=EOF)...至于行结束,你可以使用输入流的成员函数getline或者非成员函数getline(前者针对char*,后者针对string),在函数中可以用'\\n'作为行结束符 ...
c++中文件的读入和输出是怎么样的?
一种就是和put()对应的形式:ifstream &get(char &ch);功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。另一种重载形式的原型是: int get();这种形式是从流中返回一个字符,如果到达文件尾,...
【C++学习笔记(四)】之EOF 与 feof的区别
feof是用于判断文件结尾的函数,存在于头文件中。使用方法为feof(fp),其中fp为指向需要判断的文件的指针。如果文件尚未到达结尾,返回0值;若已到结尾,则返回非0值。注意:在调用feof函数时,只有在指针读取到文件尾后才可能发生异常。使用feof的逻辑是先读取数据,之后再进行判断。EOF与feof的区别在于...
c++中编译中报错说“发现意外的文件尾”是什么意思
发现意外的文件尾,是C++编译中出现的一个错误,当C++编译程序对源文件进行编译时,会对一些特定的结束标志做配对或查找。当一个期望的符号没有找到,就已经达到文件尾部时,就会报这样的错误。对于这类错误,要重点查整个程序中大括号的配对情况,以及程序最后部分的结尾符号。比如如下程序:int main(){ ...
C C++语言 EOF
如果字节流的话,读取到了-1说明到了文件尾。int i=a.read();while(i!=-1){ \/\/继续读取 i=a.read();} 对于读取字符流的话,如果到了文件尾则返回null String i=a.readLine();while(i!=null){ \/\/继续读取 i=a.readLine();} ...
c++ 我用getline()读文件当到达最后时总是多读一行!!!急!!!
发生未读到错误后,infile.getline(s,1024,'\\n')为false,所以可以这样 while(infile.getline(s,1024,'\\n')){ ...} 即infile.getline(s,1024,'\\n')正确读到数据后再处理。也可 if(infile.getline(s,1024,'\\n')){ 处理...} 对 infile.get()infile.read()等都类似处理 ...
C++中怎样获取一个文件的大小,怎样判断一个文件是否为空(文件存在,但 ...
用C语言的风格:FILE *fp = fopen("","");fseek(SEEK_END);\/\/跳到文件尾 int lenth = ftell(fp);\/\/获得文件内部指针位置 lenth就是当前文件大小,如果lenth == -1,则文件为空
c++里读写文件函数i_file.good()使用问题,代码如下
while(i_file.good())和while (!i_file.eof())存在同样的问题,你到网上搜一下“C\/C++文件之eof()”,就明白怎么回事了。注意最后一段话:“2. 读取文件过程中,读取非char型时,使用peek判断文件尾将不再适用,循环判断条件应改用>>操作符进行读取,若读入char型缓冲区,peek函数会表现得很好...
怎样把数据输入到文件的末尾?C++代码!A+B问题中的
“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。其表示方法如表。起始点 表示符号 数字表示 ———文件首 SEEK—SET0 当前位置 SEEK—CUR1 文件末尾 SEEK—END 2 例如:fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的...