<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zahlen aus Textdatei einlesen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein paar Probleme die Zahlen aus einer Textdatei auszulesen bzw. diese dann weiter zu verwenden.<br />
Die Datei heißt beziehungen.txt, das Öffnen und auslesen klappt auch. Jedoch ist das Ziel bestimmte Zahlen zu suchen und dann die Zeile, in der die Zahl steht auszugeben.</p>
<p>Die Textdatei hat folgendes Format (ein kleiner Ausschnitt):<br />
1 707 1<br />
2 65 1<br />
2 170 2<br />
2 230 1<br />
2 297 6<br />
2 349 2</p>
<p>Das ist der Code, den ich bisher dazu habe:</p>
<pre><code>#include &lt;iostream&gt; 
using namespace std; 
#include &lt;fstream&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;string.h&gt; 

struct beziehungen { 
    struct beziehungen *naechster; 
    int pate; 
    int vater; 
    int kind; 
    }; 

enum zustand {inPate, inVater}; 

struct beziehungen *ladenamen(ifstream &amp;eingabe); 
struct beziehungen *ladeidentifikation(ifstream &amp;eingabe); 
struct beziehungen *sucheid(struct beziehungen *wurzel, char *bezeichung); 

int main() { 
    char kommando [64]; 

    struct beziehungen *wurzel = NULL, *jetzt; 

    ifstream eingabe; 

    eingabe.open(&quot;beziehungen.txt&quot;); 

    if (!eingabe) { 

        cout &lt;&lt; &quot;Datei existiert nicht!&quot; &lt;&lt; endl; 
        return 0; 
    } 

    wurzel = ladenamen(eingabe); 

    for (;;) { 
        cout &lt;&lt; &quot;An welcher Person sind Sie interessiert? Bitte Ordnungsnummer eingeben:&quot; &lt;&lt; endl; 
        cout &lt;&lt; &quot;(Mit '*' beenden Sie das Programm.)&quot; &lt;&lt; endl; 
        cin.getline(kommando, 64, '\n'); 
        jetzt = sucheid (wurzel, kommando); 
            if (jetzt != NULL) 
            { 
                cout &lt;&lt; &quot;Diese ID hat den Namen: &quot; &lt;&lt; jetzt-&gt;vater &lt;&lt; &quot; mit der Nummer: &quot; &lt;&lt; jetzt-&gt;kind &lt;&lt; endl; 
            } 
            else if (*kommando=='*') { 
                return 0; 
            } 

            else { 
                cout &lt;&lt; &quot;Diese ID existiert nicht.&quot; &lt;&lt; endl; 

            } 

        } 

} 

struct beziehungen *ladenamen(ifstream &amp;eingabe) 
{ 
    struct beziehungen *wurzel = NULL, *jetzt=NULL, *neu; 

    while (!eingabe.eof()) 
    { 
        neu = ladeidentifikation(eingabe); 
        if (neu != NULL) 
        { 
            if (wurzel == NULL) wurzel = neu; 
            else jetzt-&gt;naechster = neu; 
            jetzt = neu; 

        } 
    } 

        return wurzel; 
} 

    struct beziehungen *ladeidentifikation(ifstream &amp;eingabe) 
    { 

        struct beziehungen *beziehung; 
        char zeichen; 
        char puffer[100]; 
        int zaehler; 
        enum zustand zustand; 

        beziehung = new struct beziehungen; 
        beziehung-&gt;naechster = NULL; 

        zaehler = 0; 

        for (;;) 
            { 
            eingabe.get(zeichen); 
            if (eingabe.eof()) return NULL; 
            switch(zeichen) 
               { 
            case ' ': 
                  puffer[zaehler]='\0'; 
                  zaehler=0; 
                  beziehung-&gt;pate=atoi(puffer); 
                  if (beziehung-&gt;pate==0) 
                  { 
                      zustand=inPate; 
                      break; 
                  } 
                  else if (zustand!=inVater) 
                  { 
                      beziehung-&gt;pate=atoi(puffer); 
                      zustand=inVater; 
                      break; 
                  } 

                  else if (zustand=inVater) 
                  { 
                      beziehung-&gt;vater=atoi(puffer); 
                      break; 
                  } 
            case '\n': 
               puffer[zaehler]='\0'; 
               zaehler=0; 
               beziehung-&gt;kind=atoi(puffer); 
               break; 
            default: 
               puffer[zaehler]=zeichen; 
               zaehler++; 
               break; 
            } 

        } 
    } 

    struct beziehungen *sucheid(struct beziehungen *wurzel, char *bezeichnung) 
    { 
        while (wurzel != NULL) 
        { 
            if (!strcmp(wurzel-&gt;pate, bezeichnung)) return wurzel; 
            wurzel = wurzel-&gt;naechster; 
        } 

        return NULL; 
    }
</code></pre>
<p>Mein einziger Fehler ist, dass man strcmp nicht mit int benutzen kann. Ich weiß jedoch nicht, was ich sonst noch verwenden könnte.</p>
<p>Wäre super, wenn mir jemand hefen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331908/zahlen-aus-textdatei-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 01:59:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331908.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Mar 2015 18:47:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zahlen aus Textdatei einlesen on Fri, 27 Mar 2015 18:47:14 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein paar Probleme die Zahlen aus einer Textdatei auszulesen bzw. diese dann weiter zu verwenden.<br />
Die Datei heißt beziehungen.txt, das Öffnen und auslesen klappt auch. Jedoch ist das Ziel bestimmte Zahlen zu suchen und dann die Zeile, in der die Zahl steht auszugeben.</p>
<p>Die Textdatei hat folgendes Format (ein kleiner Ausschnitt):<br />
1 707 1<br />
2 65 1<br />
2 170 2<br />
2 230 1<br />
2 297 6<br />
2 349 2</p>
<p>Das ist der Code, den ich bisher dazu habe:</p>
<pre><code>#include &lt;iostream&gt; 
using namespace std; 
#include &lt;fstream&gt; 
#include &lt;stdlib.h&gt; 
#include &lt;string.h&gt; 

struct beziehungen { 
    struct beziehungen *naechster; 
    int pate; 
    int vater; 
    int kind; 
    }; 

enum zustand {inPate, inVater}; 

struct beziehungen *ladenamen(ifstream &amp;eingabe); 
struct beziehungen *ladeidentifikation(ifstream &amp;eingabe); 
struct beziehungen *sucheid(struct beziehungen *wurzel, char *bezeichung); 

int main() { 
    char kommando [64]; 

    struct beziehungen *wurzel = NULL, *jetzt; 

    ifstream eingabe; 

    eingabe.open(&quot;beziehungen.txt&quot;); 

    if (!eingabe) { 

        cout &lt;&lt; &quot;Datei existiert nicht!&quot; &lt;&lt; endl; 
        return 0; 
    } 

    wurzel = ladenamen(eingabe); 

    for (;;) { 
        cout &lt;&lt; &quot;An welcher Person sind Sie interessiert? Bitte Ordnungsnummer eingeben:&quot; &lt;&lt; endl; 
        cout &lt;&lt; &quot;(Mit '*' beenden Sie das Programm.)&quot; &lt;&lt; endl; 
        cin.getline(kommando, 64, '\n'); 
        jetzt = sucheid (wurzel, kommando); 
            if (jetzt != NULL) 
            { 
                cout &lt;&lt; &quot;Diese ID hat den Namen: &quot; &lt;&lt; jetzt-&gt;vater &lt;&lt; &quot; mit der Nummer: &quot; &lt;&lt; jetzt-&gt;kind &lt;&lt; endl; 
            } 
            else if (*kommando=='*') { 
                return 0; 
            } 

            else { 
                cout &lt;&lt; &quot;Diese ID existiert nicht.&quot; &lt;&lt; endl; 

            } 

        } 

} 

struct beziehungen *ladenamen(ifstream &amp;eingabe) 
{ 
    struct beziehungen *wurzel = NULL, *jetzt=NULL, *neu; 

    while (!eingabe.eof()) 
    { 
        neu = ladeidentifikation(eingabe); 
        if (neu != NULL) 
        { 
            if (wurzel == NULL) wurzel = neu; 
            else jetzt-&gt;naechster = neu; 
            jetzt = neu; 

        } 
    } 

        return wurzel; 
} 

    struct beziehungen *ladeidentifikation(ifstream &amp;eingabe) 
    { 

        struct beziehungen *beziehung; 
        char zeichen; 
        char puffer[100]; 
        int zaehler; 
        enum zustand zustand; 

        beziehung = new struct beziehungen; 
        beziehung-&gt;naechster = NULL; 

        zaehler = 0; 

        for (;;) 
            { 
            eingabe.get(zeichen); 
            if (eingabe.eof()) return NULL; 
            switch(zeichen) 
               { 
            case ' ': 
                  puffer[zaehler]='\0'; 
                  zaehler=0; 
                  beziehung-&gt;pate=atoi(puffer); 
                  if (beziehung-&gt;pate==0) 
                  { 
                      zustand=inPate; 
                      break; 
                  } 
                  else if (zustand!=inVater) 
                  { 
                      beziehung-&gt;pate=atoi(puffer); 
                      zustand=inVater; 
                      break; 
                  } 

                  else if (zustand=inVater) 
                  { 
                      beziehung-&gt;vater=atoi(puffer); 
                      break; 
                  } 
            case '\n': 
               puffer[zaehler]='\0'; 
               zaehler=0; 
               beziehung-&gt;kind=atoi(puffer); 
               break; 
            default: 
               puffer[zaehler]=zeichen; 
               zaehler++; 
               break; 
            } 

        } 
    } 

    struct beziehungen *sucheid(struct beziehungen *wurzel, char *bezeichnung) 
    { 
        while (wurzel != NULL) 
        { 
            if (!strcmp(wurzel-&gt;pate, bezeichnung)) return wurzel; 
            wurzel = wurzel-&gt;naechster; 
        } 

        return NULL; 
    }
</code></pre>
<p>Mein einziger Fehler ist, dass man strcmp nicht mit int benutzen kann. Ich weiß jedoch nicht, was ich sonst noch verwenden könnte.</p>
<p>Wäre super, wenn mir jemand hefen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448248</guid><dc:creator><![CDATA[Milena]]></dc:creator><pubDate>Fri, 27 Mar 2015 18:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zahlen aus Textdatei einlesen on Fri, 27 Mar 2015 19:10:58 GMT]]></title><description><![CDATA[<p>Das ist C mit streams.<br />
Du könntest dir hier so viel sparen mit den richtigen Werkzeugen.</p>
<ol>
<li></li>
</ol>
<pre><code>while(!in.eof())
</code></pre>
<p>ist nicht so toll (bzw. unpraktisch). Entweder du verwendest std::getline<br />
<a href="http://www.cplusplus.com/reference/string/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/string/getline/</a><br />
und erhälts jede Zeile einzeln die du dann untersuchen kannst. Oder du liest direkt Zahlen</p>
<pre><code>int Zahl = 0;
while (in &gt;&gt; Zahl) { /* ... */ }
</code></pre>
<p>^<br />
Das hier löst schon viele praktische Probleme.</p>
<ol start="2">
<li>struct name* //...<br />
Ist sowas von C. C++ hat echte Objekte und Klassen. Das könntest du nutzen.<br />
new / delete / malloc / free / zeiger würden hier alle komplett dadurch überflüssig.</li>
</ol>
<p>Soweit erstmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448256</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Fri, 27 Mar 2015 19:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zahlen aus Textdatei einlesen on Fri, 27 Mar 2015 19:09:06 GMT]]></title><description><![CDATA[<p>Du mischst da C mit C++ und machst den Versuch einen eigenen kleinen 8schlechten) Parser zu schreiben.</p>
<p>Du kannst mit einem C++ (Eingabe-)Stream einfach mehrere Daten hintereinander lesen:</p>
<pre><code>std::istream &amp; in = std::cin; // oder halt einen std::ifstream

int a, b, c;
in &gt;&gt; a &gt;&gt; b &gt;&gt; c; // z.B. bei: 1 5345 38
</code></pre>
<p>Da musst du nicht kilometerlange Switch-Case Kaskaden bauen, die dann auch noch falsche unerwünschte Zeichen durchlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2448258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2448258</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 27 Mar 2015 19:09:06 GMT</pubDate></item></channel></rss>