【发布时间】:2013-12-14 14:59:31
【问题描述】:
我正在编写一个打开 txt 文件并想读取 txt 文件的最后一行的 c 程序。 我不太精通 C,所以请记住,我可能不知道 C 中的所有概念。我被困在使用 fscanf 读取 txt 文件的所有行的部分,但我想读最后一行txt 文件并获取如下所述的值。
这是我不完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *sync;
void check()
{
int success; //to hold the results if the timestamps match
sync = fopen("database.txt","r");
char file[] = "database.txt";
while (fscanf(sync, "%d.%06d", &file) != EOF)
{
}
fclose(sync);
}
示例 txt 文件:
/////// / //// ///// ///// //////////////// Time: 1385144574.787665 //////// /
/////// / //// ///// ///// //////////////// Time: 1385144574.787727 //////// /
/////// / //// ///// ///// //////////////// Time: 1385144574.787738 //////// /
/////// / //// ///// ///// //////////////// Time: 1385144574.787746 //////// /
/////// / //// ///// ///// //////////////// Time: 1385144574.787753 //////// /
/是一些我不想要的单词、符号和数字,只是上面示例txt中的数字
感谢任何示例并指出我犯的错误,以便我能更好地理解这一点。 由于我让一些人对文本文件感到困惑,这就是它的真正含义。这是它的格式,所以我应该知道每行的长度。但是,我将无法知道会有多少行,因为它可能会更新。
Socket: 0 PGN: 65308 Data: 381f008300000000 Time: 1385144574.787925 Address: 28
Socket: 0 PGN: 65398 Data: 0000000100000000 Time: 1385144574.787932 Address: 118
Socket: 0 PGN: 61444 Data: f07d83351f00ffff Time: 1385144574.787940 Address: 4
Socket: 0 PGN: 65266 Data: 260000000000ffff Time: 1385144574.787947 Address: 242
Socket: 0 PGN: 65309 Data: 2600494678fff33c Time: 1385144574.787956 Address: 29
Socket: 0 PGN: 65398 Data: 0000000100000000 Time: 1385144574.787963 Address: 118
Socket: 0 PGN: 61444 Data: f07d833d1f00ffff Time: 1385144574.787971 Address: 4
Socket: 0 PGN: 65398 Data: 0000000100000000 Time: 1385144574.787978 Address: 118
Socket: 0 PGN: 61443 Data: d1000600ffffffff Time: 1385144574.787985 Address: 3
Socket: 0 PGN: 65308 Data: 451f008300000000 Time: 1385144574.787993 Address: 28
Socket: 0 PGN: 65317 Data: e703000000000000 Time: 1385144574.788001 Address: 37
我再次关注 txt 文件最后一行的时间值(例如 1385144574.787925)。 希望这会有所帮助。
【问题讨论】:
-
为了帮助您“更好地理解它”,首先需要知道您为什么这样做。通过将带有
"database.txt"的file字符串传递给fscanf,您想做什么?这样做的目的是什么? -
你问了一个有两大部分的问题:1,如何只看最后一行(Elias 的回答很好)。 2、如何从该行中提取时间元素。如果不知道您所说的 / 是一些我不想要的单词、符号和数字 的确切含义,就无法确切知道如何为您提供帮助。单词、符号和 数字 可以包含任何 ascii 字符。如果要排除除 Time: 1385144574.787665 等之外的所有其他输入。等,那么您将不得不使用
strtok()(或strtok_r())解析该行以排除所有不需要的数据。 -
如果您提供一些输入行的完整示例,那么您可能会得到一个完整的解决方案。在发表此评论时,回答者不可能完全解决这个问题。
标签: c file-handling