1

libCurl FTP リストからの次の応答を解析できませんでした。

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;
}
4

0 に答える 0