Ergebnis 1 bis 4 von 4
  1. #1
    Support-Hure Avatar von sn0w
    Registriert seit
    18.09.2007
    Beiträge
    1.919

    Standard [C++] Zeile in Textdatei finden und ausgeben

    Hab leider keine Ahnung, wie das gehen soll...
    Ich möchte eine Zeile in einem textdokument finden.
    txt sieht so aus:
    Max:1234
    Hans:iop
    Moritz:321
    Paul:123
    usw.

    Ich möchte, dass man sein Wort finden kann und dann diese Zeile in ein extra Textdokument geschrieben werden soll. Am besten noch die Eingabe in eine input.txt und dann das Ergebnis in eine output.txt

    Alle Codeschnipsel, die mit diesem Thema was zu tun haben bitte hier rein...

    Mfg

    Boardregeln | SuFu | Blackmarket | PM

    Fragezeichen und Ausrufezeichen sind keine Rudeltiere!


  2. #2
    Coding Contest Winner
    Registriert seit
    21.03.2008
    Beiträge
    273

    Standard

    Kommt drauf an ob Du unter .Net arbeitest, oder nicht. Ich mach mal trotzdem für beides nen Beispiel:
    Code:
    //Für C++ unter Visual Studio in Net
    String^ Line;
    System::IO::StreamReader^ Reader = gcnew System::IO::StreamReader("Comboliste.txt");
    
    while(Line = Reader->ReadLine() !=0) //Solang noch Zeilen da sind
    {
      if( Line->IndexOf("DeinSuchwort")>0)
    {
       System::IO::StreamWriter Writer = gcnew System::IO::StreamWriter("output.txt") //Würde erstellt werden
    Writer->WriteLine(Line);
    Writer->Close();
    }
    }
    Reader->Close();
    Und noch die Methode die Sicher funktioniert:
    Code:
    #include <iostream>
    #include <fstream.h>
    
    using namespace std;
    
    int main()
    {
    ifstream Input("text.txt");
    //Dann das selbe wie Oben, das wirst Du ja noch können... ;-)
    char Line[2000];
    while(Line = ....)
    Input.readline
    //So ziemlich das selbe, musst halt noch umschreiben...
    if(Gefunden==1 oder so)
    {
    ofstream Output("output.txt");
    Output.write(Line);
    }
    }
    P.s mit dem Zweiten bin ich mir nicht ganz sicher, google mal nach fstream

    Noch was, der code ist einfach so zusammen getippt, ich hoff (wenigstes der erste) läuft...

    Greez easysurfer
    Gamehacking, Coding, Reversing and Security!
    Blog @easysurfer.me

  3. #3
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Hier das ganze mal C-kompatibel (Größe: 8150 bytes, Linux Binärdatei, unter Windows wahrscheinlich ~16 KB).

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define TXTF "input.txt"
    #define OUTF "output.txt"
    #define FIND "Hans:"
    
    
    int strpos(FILE *, const char *, unsigned int);
    unsigned int readline(FILE *, char *, unsigned int);
    
    int main(void)
    {
    	int pos;
    	unsigned int len;
    	char buffer[200];
    	FILE *fp = fopen(TXTF, "rb");
    	FILE *fp2 = fopen(OUTF, "wb");
    	
    	if (fp == 0 || fp2 == NULL) return 0;
    	if ((pos = strpos(fp, FIND, 0)) == -1) return 0;
    	
    	fseek(fp, pos, SEEK_SET);
    	/* folgende Zeile funktioniert auch mit stdin ;) */
    	len = readline(fp, buffer, sizeof(buffer) - 1);
    	fwrite(buffer, 1, len, fp2);
    	
    	fclose(fp);
    	fclose(fp2);
    	return 0;
    }
    
    int strpos(FILE *fp, const char *find, unsigned int offset)
    {
    	int o = - strlen(find);
    	int p = ftell(fp);
    	unsigned int x = 0;
    	unsigned int len;
    	char str = 0;
    	
    	fseek(fp, 0, SEEK_END);
    	len = ftell(fp);
    	fseek(fp, offset, SEEK_SET);
    	
    	for(; offset < len; offset++)
    	{
    		fread(&str, 1, sizeof(str), fp);
    		if (feof(fp) || x == strlen(find)) break;
    		else if (find[x] != str) x = 0;
    		else x++;
    	}
    
    	fseek(fp, p, SEEK_SET);
    	return feof(fp) ? -1 : (int) offset + o;
    }
    
    unsigned int readline(FILE *fp, char *buffer, unsigned int sz)
    {
    	unsigned int resp = 0;
    	char *backup = buffer;
    	while(*(buffer - 1) != '\n' && *(buffer - 1) != '\r' && --sz)
    	{
    		*buffer = fgetc(fp);
    		if (*buffer == '\r') continue;
    		buffer++;
    		resp++;
    	}
    	if (backup < buffer) *(buffer - 1) = 0;
    	return --resp;
    }

    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  4. #4
    Support-Hure Avatar von sn0w
    Registriert seit
    18.09.2007
    Beiträge
    1.919

    Standard

    @ BlackBerry: thx erstmal hat 1a funktioniert^^ Geht das vielelicht auch so, dass man den gesuchten Text in ein extra Textdokument schreibt? search.txt <- In diesem .txt-Dokument stehen mehrere Wörter, die gefunden werden soll.

    Mfg

    Ps: Wenn du Zeit hast, kannste mir das vielleicht ein bisschen erklären

    Boardregeln | SuFu | Blackmarket | PM

    Fragezeichen und Ausrufezeichen sind keine Rudeltiere!


Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •