Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » mehrere pfade ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
25.09.2004, 11:25 Uhr
~jens
Gast


Hallo,

habe mal wieder eine frage ?!
und zwar versuche ich eine datei aus mysql tabel zu erstellen
das funktioniert bereits auch aber der pfad wo die datei geschreiben werden soll ist ca 50 mal anderes.

gibt es eine möglich keit mehre pfade in einer array oder variable zu speichern und das
man durch eine schleife immer den nächsten pfad bekommt ?

if(mysql_query(&mysql, "select * from testdb into outfile \"c://test.log\" "));
^^ erster pfad
if(mysql_query(&mysql, "select * from testdb into outfile \"d://test.log\" "));
^^ zweiter pfad

meine es würde auch so gehen aber ein wenig umständlich.

mfg
jens
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.09.2004, 11:35 Uhr
~mike
Gast


Hi!
Also mit sprintf könntest du dir die Pfade basteln:

C++:
char puff[100];
static const char *pfade[] = {"Pfad1","Pfad2"};
//schleife
sprintf(puff,"SELECT * FROM testdb INTO OUTFILE \"%50.50s\";",pfade[i]);
//...
if(mysql_query(&mysql, puff));



mfg

Dieser Post wurde am 25.09.2004 um 11:40 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.09.2004, 11:43 Uhr
~jens
Gast


super danke für die schnelle antwort teste es mal wieder sofort
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.09.2004, 11:58 Uhr
~jens
Gast


hm irgendwie gibt er mit als pfad nichts zurück ?

int i = 0;
char puff[100];
static const char *pfade[] = {"test","test2"};
//schleife

sprintf(puff,"SELECT * FROM scythe INTO OUTFILE \"%50.50s\";",pfade[i]);



if(mysql_query(&mysql, puff));

printf (puff);


printf(puff) gibt mir SELECT * FROM scythe INTO OUTFILE " wieder aber kein pfad ?


mfg jens
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.09.2004, 12:32 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Öhm. Hab ganz vergessen: Das wird oben mit whitespaces ausgegeben. Probier mal

C++:
#include <stdio.h>

int
main(void)
{
  char puff[100];
  char tmp[50];
  static const char *pfade[] = {"test1","test2"};
  int i=0;
  for(i=0; i<2; i++) {
    strncpy(tmp, pfade[i],50);
    sprintf(puff,"SELECT * FROM scythe INTO OUTFILE \"%s\";",tmp);
    puts(puff); /*Hier dien mysql*/
  }
}



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.09.2004, 12:42 Uhr
mike
Pinguinhüpfer
(Operator)


Oder noch ressourcenschonender

C++:
#include <stdio.h>
#define PUFF 128

int
main(void)
{
  char puff[PUFF];
  static const char *pfade[] = {"test1abcde","test2abcde"};
  int i=0;
  for(i=0; i<2; i++) {
    snprintf(puff,PUFF,"SELECT * FROM scythe INTO OUTFILE \"%s\";",pfade[i]);
    puts(puff);
  }
}


--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.09.2004, 12:45 Uhr
~jens
Gast


super klappt!!!

Danke dir mike
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.09.2004, 12:52 Uhr
0xdeadbeef
Gott
(Operator)


Darfs auch C++ sein? Da ginge das nämlich deutlich einfacher...

C++:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

void do_query(std::string const &s) {
  std::string query_str = "SELECT * FROM testdb INTO OUTFILE \"" + s + "\";";

  // Hier stattdessen dann den MySQL-Kram.
  std::cout << query_str << std::endl;
}

int main(void) {
  std::vector<std::string> pfade;

  pfade.push_back("test1");
  pfade.push_back("test2");

  std::for_each(pfade.begin(), pfade.end(), &do_query);
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.09.2004, 14:09 Uhr
mike
Pinguinhüpfer
(Operator)


Hmm. Mist Hier meien dynamische Variante:

C++:
#include <stdio.h>
#define PUFF 50

int
main(void)
{
  char puff[PUFF];
  char *str = puff;
  char *extra = NULL;
  char *result = NULL;
  int len;
  static const char *pfade[] = {"test1abcde","test2abcde"};
  int i=0;
  for(i=0; i<2; i++) {
    if((len = snprintf(puff,PUFF,"SELECT * FROM scythe INTO OUTFILE \"%s\";",pfade[i])) >= PUFF)
      if(extra = (char *)malloc((len+1) * sizeof(char)))
        snprintf(str = extra, len+1,"SELECT * FROM scythe INTO OUTFILE \"%s\";", pfade[1]);

    result = extra == NULL ? puff : extra;

    puts(result);
    if(extra)
      free(extra);
  }
}


Hoffe es stimmt ungefähr - abgeschmiert es ist zumindest nicht

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.09.2004, 00:36 Uhr
0xdeadbeef
Gott
(Operator)


Na, dann wärs doch sinnvoller, gleich

C++:
#define QUERY_FMT "SELECT * FROM test_db INTO OUTFILE \"%s\";"

/* ... */

char *str = (char*) malloc(sizeof(QUERY_FMT) + strlen(current_path) - 2);
sprintf(str, QUERY_FMT, current_path);


zu schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: