Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Inhalt vom globalen Pointer gelöscht

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 <
000
13.11.2007, 14:22 Uhr
~stupido
Gast


Hallo,

ich hab folgendes Problem:
Ich parse eine txt Datei und fange ja durch bestimmte Keywörter die Informationen ab:
global, lediglich das notwendige:

C++:
char *mod_type;

main:
   FILE *file;
   ifstream in("pu.txt");
   char buffer[ZEILENLAENGE], f_name[20];
   char *test;
   am_key_w=sizeof(key_w)/4;
   modtype.name="Mode Typ";
  
   if( (file=fopen("test.txt","r")) == NULL)
   {
      fprintf(stderr, "Kann %s nicht oeffnen\n", f_name);       // Fehlerkanal, Meldung
      return EXIT_FAILURE;
   }
  
   while ((fgets(buffer, 255, file) != NULL) && fend_check==0 )
   {
        if (strstr(buffer,"FAILSTART") != 0)            // erkennt "Failstart" in eingelesener Zeile
        {....//egal///
        }
        else //str_cmp(buffer);
        {
            if (strstr(buffer,key_w[0])!= 0)                          // im Array steht keyword
            {
                printf("line %d : %s",i,buffer);
                n=strlen(key_w[0]);
                n+=1;                                          // +Trennzeichen                            
                printf ("%d", n);
                strcpy(buffer, buffer+n+add_seperator);
                mod_type=buffer;
                checked++;
                modtype.cont=mod_type;
                test=mod_type;          
             }
      
        }  
   count++;
}
  
    fclose(file);  
   return EXIT_SUCCESS;
}



Wenn ich mod_type sofort ausgebe steht das drin, was ich brauche, aber soblad ich es außerhalb, also nach der while Schleife auslese, steht entweder nichts drin oder mit ausprobieren die nächste Zeile...(ich habe tausend verschiedene kopien versucht; global ptr, struct und im main...aber es bleibt im Nachhinein leer)
Hoffe ihr könnt mir helfen.

Danke!!

mod edit: Benutze die CPP Tags selber

Dieser Post wurde am 13.11.2007 um 23:37 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.11.2007, 14:24 Uhr
~stupido
Gast


natürlich sind die txt files gleich...vergessen zu ändern..sorry
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.11.2007, 14:37 Uhr
xXx
Devil


Kannst du mir mal erklären warum du einen std::ifstream anlegst (damit kann niemand sonnst auf die Datei zugreifen) und dann noch die Datei per fopen(C-Style) öffnen willst?
Und an sonnsten ist das alles sehr C und nix C++ ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.11.2007, 10:40 Uhr
~stupido
Gast


Weil dann irgendwie die Befehle nicht funktionieren glaub ich...(mit fgets oder strstr...weiß nich mehr)
und okay es ist mehr c...
mein problem hat sich auch gelöst...man kopiert strings mit strcpy und nicht mit =(wollte ja keine pointerübergabe machen).
Wenn du das schon ansprichst mit dem Öffnen, kann ich 2 Dateien parallel öffnen oder muss ich immer nacheinander öffnen und spichern?

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.11.2007, 13:31 Uhr
xXx
Devil


Du kannst die Problemlos parallel öffnen, wenn es sich nicht um ein und die selbe Datei handelt :P
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.11.2007, 14:39 Uhr
~stupido
Gast


Danke!
Und wie sieht es mit dem stream aus...habe ich Recht oder geht das alles mit einem "Öffnungsbefehl" , da , zumindestens glaube ich das gelesen zu haben, nicht alles mit dem fopen Zeiger geht...weiß nich mehr
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.11.2007, 15:41 Uhr
xXx
Devil



C++:
struct mode_type
{
    std::string name;
    enum type { string, integer } me;
    mode_type(std::string const& name) : name, me(string) {}
};

void search_items(std::string const& filename, std::vector<std::string> const& keys, std::vector<mode_type>& dest)
{
    std::ifstream file_stream(filename.c_str());
    if (!file_stream) throw std::invalid_argument("filename");
    dest.clear();
    
    std::string tmp;
    while (std::getline(file_stream, tmp))
    {
        if (tmp.find("FAILSTART") != std::string::npos) { /* ... */ }
        else
        {
            for (std::vector<std::string>::const_iterator it(keys.begin()), it != keys.end(); ++it)
                if (tmp.substr(0, (*it).length()) == (*it))
                    dest.push_back(mode_type(tmp.substr((it).length() + 1)));
        }
    }
}
oder wie auch immer deine mode_type (modtype) struct aussieht ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: