Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » [c++] Datei als string...

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
05.02.2004, 23:17 Uhr
BoNeSpiRit



Well ich hab hier schon einige Themen zu gefunden, aber irgendwie helfen die mir nicht weiter...

Ich würd gern aus einer Datei Zeilenweise strings auslesen...

Hab den Aho-Corasick implementiert und würd jetzt gerne den Text und die Pattern aus einer Datei und nicht auser Console einlesen...

hab mal angefügt wie es jetzt über die Konsole läuft, damit nen Überblick da is wies gerade funktioniert...

verwende Dev-cpp...


C++:
//Input
    printf("\nBitte Text eingeben:");  //Texteingabe; wuerd ich gerne aus Dateieinlesen...
    scanf("%s", Text);
    n = strlen( Text );

    printf("\nAnzahl der Pattern: ");  //# der Pattern
    scanf("%i", &Anz);  //Pattern count

    for (int i=0; i<Anz ; i++){          //Patterneingabe; wuerd ich gerne aus einer datei auslesen, wobei jede Zeile ein Pattern is, spart dann auch eingabe der Anzahl der Pattern...
        printf("\nPattern %i: ",i);
        scanf("%s", &pattern[i]);
        
        while (strlen(pattern[i].s) > n) {  //Pattern > Text nicht erlaubt
                printf("\nPattern %i ist groesser als der Text !!!\nBitte versuchs noch einmal.\n", i, i);
                printf("\nNeues Pattern %i: ", i);
                scanf("%s", &pattern[i]); }
        
        pattern[i].len = strlen( pattern[i].s );    
        pattern[i].p = NULL;
    }

//Output
    printf( "\nText: %s\n", Text );
    for ( int i = 0; i < Anz; i++ )
    printf( "Pattern %d: %s\n", i, pattern[i].s );
    printf( "\nSearching...\n" );
    fflush( stdout );

// und hier nun die Aufrufe für den AC...

    macheBaum();
    lauf();

    if ( pRoot != NULL )
    {
        disposeTree( pRoot );
        pRoot = NULL;
    }



Danke euch schonmal im Vorraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.02.2004, 23:33 Uhr
Pablo
Supertux
(Operator)


Und was ist denn genau das Problem? Weißt du nicht, wie man aus Dateien ausliest, oder was?


C++:
#include <stdio.h>
#define MAX_LINE 4096
int main()
{
    FILE* f;
    char line[MAX_LINE];
    int c=0;
    if(NULL==(f=fopen("datei.txt", "r"))) {
        fprintf(stderr, "Datei kann nicht geöffnet werden\n");
        return 1;
    }

    while(!feof(f)) {
        c++;
        fgets(line, MAX_LINE, f);
        printf("Zeile %d: %s", c,line);
    }

    return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.02.2004, 02:15 Uhr
BoNeSpiRit




Jupp... Ich hatte noch nie eingabe gebraucht, versuch mein Glück mit c++ noch nich so lange

Aber ich seh grad, dass des bei mir mit den pattern nich so einfach is...
hab da nen


C++:
typedef struct {
    char s[MAX_PATTERN_LEN];
    int len;
    PNode p;
    } TPattern;



für meinen Algorithmus drin...

Gibs denn ne Möglichkeit von FILE nach meinem TPattern zu konvertieren?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.02.2004, 17:03 Uhr
(un)wissender
Niveauwart


??
File ist ein Dateizeiger, den kannst du doch nicht in eine Struktur umwandeln!
Willst du vielleicht aus der Datei die Struktur lesen?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.02.2004, 16:23 Uhr
BoNeSpiRit



jupp... da haste natürlich recht...
jupp, eigentlich will ich die Struktur haben...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.02.2004, 19:43 Uhr
(un)wissender
Niveauwart


Na dann...
sizeof(meine_struktur) einlesen aus file, dann an Adresse der Struktur kopieren, evtl. mit memcpy.
Fertig.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.02.2004, 02:39 Uhr
BoNeSpiRit



aaahhhh...
Na da dank ich Dir vielmals
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.02.2004, 03:39 Uhr
0xdeadbeef
Gott
(Operator)


Das ist aber C, was du da machst. In C++ würdest du typischerweise so rangehen:

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

//...
std::string zeile, wort;
std::ifstream fin("datei.txt");
std::fin >> wort; //liest ein Wort aus fin in wort
std::getline(fin, zeile); //liest eine Zeile aus fin in zeile


was die Struktur/Klasse angeht, der würdest du wohl einen >> und einen <<-Operator mitgeben, die das dann in geeigneter Form in den Stream schreiben bzw. daraus lesen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 08.02.2004 um 03:40 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: