关于 检测文件是否被修改 如果修改就再次打印文件内容

zwbhwa 2012-09-27 05:14:37
int main(int argc, char* argv[])
{
fstream fs;
fs.open("a.txt", ios::in);
time_t t = 0;
while(1)
{
struct stat buf;
stat("a.txt", &buf);
cout << "tbuf =" << ctime(&buf.st_mtime) <<endl;
cout << "t =" << ctime(&t) << endl;
Sleep(1000);

if ( buf.st_mtime != t )
{
string str;
vector<string> id;
while(!fs.eof())
{
getline(fs,str); //按行读入

id.push_back(str);

cout << str <<endl;
}
t = buf.st_mtime;
}
Sleep(2000);

cout << "t =" << ctime(&t) << endl;
Sleep(5000);

}


fs.close();
/*system( "pause ");*/
printf("Hello World!\n");
getch();

return 0;
}
----------------------------
a.txt

111111
222222
333333


求问当我修改a.txt后 已经显示tbuf和t 不相等了 但是就是没法执行if语句 这是咋回事?
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin51616780 2012-09-28
  • 打赏
  • 举报
回复
fseek
冷月清晖 2012-09-28
  • 打赏
  • 举报
回复
不行的话改成

while (getline(fs,str))
mujiok2003 2012-09-28
  • 打赏
  • 举报
回复

time_t lastModified = 0;
while(1)
{
struct stat buf;
stat("a.txt", &buf);
if ( buf.st_mtime != lastModified )
{
//modified, do sth here
//....
lastModified = buf.st_mtime;
}
//other controls go here
冷月清晖 2012-09-28
  • 打赏
  • 举报
回复
也不对。。。
冷月清晖 2012-09-28
  • 打赏
  • 举报
回复
不对哦:
eof( ), that returns nonzero (meaning TRUE) when there are no more data to be read from an input file stream, and zero (meaning FALSE) otherwise.

while(!fs.eof()) 改为while(fs.eof())
冷月清晖 2012-09-28
  • 打赏
  • 举报
回复
哦,把while(!fs.eof()) 改为while(!fs)
zwbhwa 2012-09-28
  • 打赏
  • 举报
回复
if进去了啊……里面除了while之外的语句都执行了啊……求怎么跳转至文件开头
[Quote=引用 4 楼 的回复:]

。。。那就是if没有进去呀。
[/Quote]
冷月清晖 2012-09-28
  • 打赏
  • 举报
回复
。。。那就是if没有进去呀。
zwbhwa 2012-09-28
  • 打赏
  • 举报
回复
if可以进了 但是 我用F10单步后 发现 是因为文件读取到结尾了 没法跳到开头 导致后面的while循环没法执行……
求解答……怎么跳转到开头
[Quote=引用 1 楼 的回复:]
你不能直接比较,
需要用difftime函数。
[/Quote]
zwbhwa 2012-09-28
  • 打赏
  • 举报
回复
if可以进了 但是 我用F10单步后 发现 是因为文件读取到结尾了 没法跳到开头 导致后面的while循环没法执行……
求解答……怎么跳转到开头
zwbhwa 2012-09-28
  • 打赏
  • 举报
回复
后来在if里加了个
fs.clear();
fs.seekg(0, ios::beg);
就好了……
[Quote=引用 10 楼 的回复:]
不行的话改成

while (getline(fs,str))
[/Quote]
赵4老师 2012-09-28
  • 打赏
  • 举报
回复
用filemon软件?
冷月清晖 2012-09-27
  • 打赏
  • 举报
回复
你不能直接比较,
需要用difftime函数

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧