4个回答
展开全部
不知道你最后一个数据是什么类型的。
由你自己定义最后一个数据,这里假设它的类型为T(可以为整形,浮点型,结构体等等任意,只要你自己在读写的时候统一,自己能够识别就行)。给你个C语言的代码片段:
FILE* pf = fopen("test.txt","r"); //注意这里是以文本方式打开的
fseek(pf,-sizeof(T),SEEK_END); //将文件指针移动到距文件末尾sizeof(T)的位置处,这样读取的时候就可以直接从T也就是你定义的所谓最后一个数据开始读取。
fread(buff,sizeof(T),1,pf); //buff是你事先定义的一个缓冲区,确保它能够容纳你定义的T。
由你自己定义最后一个数据,这里假设它的类型为T(可以为整形,浮点型,结构体等等任意,只要你自己在读写的时候统一,自己能够识别就行)。给你个C语言的代码片段:
FILE* pf = fopen("test.txt","r"); //注意这里是以文本方式打开的
fseek(pf,-sizeof(T),SEEK_END); //将文件指针移动到距文件末尾sizeof(T)的位置处,这样读取的时候就可以直接从T也就是你定义的所谓最后一个数据开始读取。
fread(buff,sizeof(T),1,pf); //buff是你事先定义的一个缓冲区,确保它能够容纳你定义的T。
追问
我用的是c++,最后一个是整形
追答
那你把sizeof(T)换成sizeof(int)吧。
C++的我也不常用,你可以在网上搜一下ifstream和ofstream嘛,你看一下具体的语法规则,我上面的回答是给你一个思路,你可以参考参考,这样学习才能进步。另外有个温馨提示,就是读写文件的时候要用同一种方式访问即要么都文本方式要么都二进制方式,这样才能保证你读到的数据就是你当初写入的数据。
展开全部
//因为你的文件是个文本,所以不好用sizeof(类型)得出数据占用空间大小,只好一个一个往回退然后判断了
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in;
in.open("d:\\111.txt");
int n;
int len=-1;
char ch,f=0;
in.seekg(0,ios::end);
int fsize=in.tellg();
while(1)
{
in.seekg(len,ios::end);
if(-len==fsize)
{
in>>n;
break;
}
in.get(ch);
if(f==0)
{
if(!(ch==' '||ch=='\n')) //这一段用来跳过结尾可能存在的无效空格和换行
f=1;
}
else
{
if((ch==' '||ch=='\n'))
{
in>>n;
break;
}
}
len--;
}
in.close();
cout<<n<<endl;
}
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in;
in.open("d:\\111.txt");
int n;
int len=-1;
char ch,f=0;
in.seekg(0,ios::end);
int fsize=in.tellg();
while(1)
{
in.seekg(len,ios::end);
if(-len==fsize)
{
in>>n;
break;
}
in.get(ch);
if(f==0)
{
if(!(ch==' '||ch=='\n')) //这一段用来跳过结尾可能存在的无效空格和换行
f=1;
}
else
{
if((ch==' '||ch=='\n'))
{
in>>n;
break;
}
}
len--;
}
in.close();
cout<<n<<endl;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++的操作忘记了,
C可以fseek到文件末,然后再去读取,查下函数用法就行了。
C可以fseek到文件末,然后再去读取,查下函数用法就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要读取的数据是最后一个字节?最后一个数字?最后一个字符串?还是某个数据结构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询