Я пишу программу c, которая открывает файл txt и хочет прочитать последнюю строку файла txt. Я не владею C, поэтому помните, что я не знаю всех понятий в C. Я застрял в той части, где я использую fscanf, чтобы читать все строки моего txt-файла, но я хочу взять последнее строки txt-файла и получить значения, как описано ниже.C программирование, получение последней строки файла
Вот мой неполный код:
#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
Опять я после значений времени (например. 1385144574.787925) в последней строке текстового файла. Надеюсь, это поможет.
Чтобы помочь вам «понять это намного лучше», нужно знать, почему вы это сделали в первую очередь. Что вы пытались сделать, передав строку 'file' с' "database.txt" 'в нее в' fscanf'? Какова была цель этого? – AnT
Вы задали вопрос с двумя большими частями: 1, как смотреть только на последнюю строку (ответ Elias - хороший). 2, как извлечь элемент времени из этой строки. Не зная, что именно вы подразумеваете под ***./Некоторые слова, символы и цифры, которые я не хочу ***, нет способа точно знать, как вам помочь. Слова, символы и *** числа *** могут включать любой символ ascii. Если вы хотите исключить все другие входные данные, кроме _Time: 1385144574.787665_ et. al., тогда вам придется проанализировать строку для _exclude_ всех нежелательных данных с помощью 'strtok()' (или 'strtok_r()'). – ryyker
Если вы предоставите пример некоторых экземпляров ввода-фактуры, то вы, скорее всего, получите полное решение. Во время этого комментария, ответчики, возможно, не могли полностью решить эту проблему. – ryyker