Анализ ответа FTP LIST в переполнении стека

Мне не удалось проанализировать следующий ответ из списка FTP libCurl.

ftplister = fopen("ftp-full-list", "wb"); /* b is binary, needed on win32 */

curl = curl_easy_init();
if(curl) {
/* Get a file listing from sunet */
curl_easy_setopt(curl, CURLOPT_URL, furl.c_str() );
curl_easy_setopt(curl, CURLOPT_USERPWD, usrpwd.c_str());

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_flist);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftplister);

res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));

/* always cleanup */
curl_easy_cleanup(curl);
}

fclose(ftplister); /* close the local file */
}

Write_flist есть

size_t  semperCloudBackup::write_flist(void *ptr, size_t size, size_t nmemb, void *stream)
{
FILE *writehere = (FILE *)stream;
return fwrite(ptr, size, nmemb, writehere);
}

Дайте мне вывод, показанный ниже

03-26-07  05:23AM       <DIR>          html
03-26-07  04:27AM       <DIR>          laptop
03-26-07  03:16AM       <DIR>          images
03-27-07  11:00PM                 6397 index.html
03-26-07  03:45AM                10186 index1.html

Мне пришлось
1. Найти, если это каталог или файл
2. Сохраните файл вместе с его размером (я предполагаю, что в массиве), чтобы сделать некоторые расчеты с размером.
3. Храните имена каталогов отдельно

Любая помощь будет оценена, новичок здесь. Спасибо

После долгих поисков, я думаю, что нашел что-то в Perl, но я хотел это в C ++

#!/usr/bin/perl
use warnings;
use strict;

while(<DATA>) {
chomp;
my @elements = split /\s+/, $_;
if ( $elements[2] eq '<DIR>' ) {
print "Directory: ",$elements[3], "\n";
}
else {
print "The size of $elements[3] is $elements[2] bytes.\n";
}
}

__DATA__
03-26-07  05:23AM       <DIR>          html
03-26-07  04:27AM       <DIR>          ibm-laptop
03-26-07  03:16AM       <DIR>          images
03-27-07  11:00PM                 6397 index.html
03-26-07  03:45AM                10186 index1.html

Я также нашел это ftpparse

Чтобы прочитать каждую строку в отдельности (хотя она не полностью используется), я использовал следующее:

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int main() {
// a string to store line of text
string textLine;
// try to open a file
ifstream ifs("sample_file.txt", ifstream::in);
if (ifs.good())   { // if opening is successful
// while file has lines
while (!ifs.eof()) {
// read line of text
getline(ifs, textLine);
// print it to the console
cout << textLine << endl;
}
// close the file
ifs.close();
} else
// otherwise print a message
cout << "ERROR: can't open file." << endl;

return 0;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]