<?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[Bestimmte Zahl aus Datei auslesen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine vom System generierte Datei:</p>
<pre><code>86 01 4b 46 7f ff 0a 10 5e : crc=5e YES
86 01 4b 46 7f ff 0a 10 5e t=24375
</code></pre>
<p>Ich möchte gerne in der zweiten Zeile den Wert hinter t= auslesen und in einem double Wert speichern. Optional würde ich gerne gerne überprüfen, ob in der ersten Zeile das YES am Ende der Zeile vorhanden ist (Checksum).</p>
<p>Ich habe das mit einer while-Schleife bisher ausprobiert, jedoch erhielt ich nie den Wert, den ich haben wollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Kann mir jemand bitte mal auf die Sprünge helfen, was ich verbessern sollte?</p>
<p>Das ist mein Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
using namespace std;

/* Entry Point */
int main (int argc, char **argv)
{
    ifstream datei;
    int temperatur;
    float variable1;
    string text;
    int abort = 0;

    while ((abort != 1))
    {
        datei.open(&quot;/sys/bus/w1/devices/28-00000318f75d/w1_slave&quot;, ios::in);
        if ((datei.fail()))
        {
            cout &lt;&lt; &quot;Konnte datei nicht öffnen!&quot;;

            /* Man könnte hier auch break nehmen um die schleife abzubrechen. */
            /* break; */
            return 0;
        }

        datei.seekg (0, datei.beg);

        getline(datei, text);

        temperatur = atoi(text.c_str());

        variable1 = ((float)temperatur) / 1000.0f;

        /* Wenn er hier keine nach Komma stellen anzeigt, versucht */
        /* printf(&quot;%f\n&quot;, variable1); */

        cout &lt;&lt; variable1 &lt;&lt; &quot;\n&quot;;

        datei.close();

        sleep(1);
    }

    /* Mit break geht es hier weiter mit der ausführung. */

    //::getchar();

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/328114/bestimmte-zahl-aus-datei-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 12:02:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328114.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Sep 2014 09:45:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bestimmte Zahl aus Datei auslesen on Tue, 23 Sep 2014 09:45:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine vom System generierte Datei:</p>
<pre><code>86 01 4b 46 7f ff 0a 10 5e : crc=5e YES
86 01 4b 46 7f ff 0a 10 5e t=24375
</code></pre>
<p>Ich möchte gerne in der zweiten Zeile den Wert hinter t= auslesen und in einem double Wert speichern. Optional würde ich gerne gerne überprüfen, ob in der ersten Zeile das YES am Ende der Zeile vorhanden ist (Checksum).</p>
<p>Ich habe das mit einer while-Schleife bisher ausprobiert, jedoch erhielt ich nie den Wert, den ich haben wollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Kann mir jemand bitte mal auf die Sprünge helfen, was ich verbessern sollte?</p>
<p>Das ist mein Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt;
using namespace std;

/* Entry Point */
int main (int argc, char **argv)
{
    ifstream datei;
    int temperatur;
    float variable1;
    string text;
    int abort = 0;

    while ((abort != 1))
    {
        datei.open(&quot;/sys/bus/w1/devices/28-00000318f75d/w1_slave&quot;, ios::in);
        if ((datei.fail()))
        {
            cout &lt;&lt; &quot;Konnte datei nicht öffnen!&quot;;

            /* Man könnte hier auch break nehmen um die schleife abzubrechen. */
            /* break; */
            return 0;
        }

        datei.seekg (0, datei.beg);

        getline(datei, text);

        temperatur = atoi(text.c_str());

        variable1 = ((float)temperatur) / 1000.0f;

        /* Wenn er hier keine nach Komma stellen anzeigt, versucht */
        /* printf(&quot;%f\n&quot;, variable1); */

        cout &lt;&lt; variable1 &lt;&lt; &quot;\n&quot;;

        datei.close();

        sleep(1);
    }

    /* Mit break geht es hier weiter mit der ausführung. */

    //::getchar();

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2418786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418786</guid><dc:creator><![CDATA[julianpe]]></dc:creator><pubDate>Tue, 23 Sep 2014 09:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Zahl aus Datei auslesen on Tue, 23 Sep 2014 10:01:54 GMT]]></title><description><![CDATA[<p>Dann beschreibe mal, was das vorhandene Programm deiner Meinung nach macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418788</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 23 Sep 2014 10:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Zahl aus Datei auslesen on Tue, 23 Sep 2014 10:12:49 GMT]]></title><description><![CDATA[<p>Meine Kommentare zum Code:</p>
<p>julianpe schrieb:</p>
<blockquote>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;stdlib.h&gt; // ???
using namespace std;

int main (int argc, char **argv)
{
	// Wir sind hier nicht in C sondern in C++, daher alles so spät / lokal wie möglich definieren
    ifstream datei;
    int temperatur;
    float variable1;
    string text;
    int abort = 0; // Suchst du bool?

    while ((abort != 1))
    {
		// 1. Das gehört in den Konstruktor
		// 2. ios::in ist bei ifstreams schon implizit gesetzt
        datei.open(&quot;/sys/bus/w1/devices/28-00000318f75d/w1_slave&quot;, ios::in);
        if ((datei.fail()))
        {
            cout &lt;&lt; &quot;Konnte datei nicht öffnen!&quot;;
            return 0;
        }

		// Leseposition um 0 verschieben? Sinn?
        datei.seekg (0, datei.beg);

        getline(datei, text);
		
		// In C++ kann man auch direkt von Streams in ints etc. einlesen
        temperatur = atoi(text.c_str());

		// Den hässlichen C-Cast kannst du dir sparen da 1000.f schon float ist -&gt; Promotion
        variable1 = ((float)temperatur) / 1000.0f;

        cout &lt;&lt; variable1 &lt;&lt; &quot;\n&quot;;

		// Würdest du dir auch sparen wenn datei lokal definiert wäre dank Destruktor und sexy RAII
        datei.close();

		// Wozu?
        sleep(1);
    }

	// Wozu?
    return 0;
}
</code></pre>
</blockquote>
<p>Und wie manni66 sagte:<br />
Wo ist der Code, der das <em>YES</em> und die Zahl nach <em>t=</em> ausliest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418790</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 23 Sep 2014 10:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Zahl aus Datei auslesen on Tue, 23 Sep 2014 10:17:22 GMT]]></title><description><![CDATA[<p>Hallo julianpe,</p>
<p>Willkommen im C++-Forum.</p>
<p>Zu Deinem Problem: Nutze die Möglichkeiten von <a href="http://www.cplusplus.com/reference/istream/istream/ignore/" rel="nofollow">istream::ignore</a>; so kannst Du alles überlesen, bis Du auf ein bestimmtes Zeichen triffst.</p>
<p>Beispiel:</p>
<pre><code>#include &lt;fstream&gt; // ifstream
#include &lt;iostream&gt;  // cout, cerr
#include &lt;limits&gt;  // numeric_limits&lt;&gt;
#include &lt;string&gt;

int main() 
{
    using namespace std;
    ifstream datei(&quot;/sys/bus/w1/devices/28-00000318f75d/w1_slave&quot;);
    if( !datei.is_open() )
    {
        cerr &lt;&lt; &quot;Fehler beim Oeffnen der Datei&quot; &lt;&lt; endl;
        return -2;
    }

    const streamsize ALLES = numeric_limits&lt; streamsize &gt;::max();
    string word;
    datei.ignore( ALLES, '=' ) &gt;&gt; word; // z.B. &quot;... crc=5e&quot;
    if( datei &gt;&gt; word ) // YES
    {
        if( word == &quot;YES&quot; )
            cout &lt;&lt; &quot;Checksumme Ok&quot; &lt;&lt; endl;
    }
    float variable_t;
    if( datei.ignore( ALLES, '=' ) &gt;&gt; variable_t )
    {
        cout &lt;&lt; &quot;t=&quot; &lt;&lt; variable_t &lt;&lt; endl;
    }
    return  0;
}
</code></pre>
<p>.. noch ein paar Fragen zum Format:<br />
wenn kein 'YES' da steht, was steht dann da?<br />
kann außer 't=..' am Ende der zweiten Zeile noch etwas anderes ähnliches stehen (z.B. a=..)?<br />
Ist die Anzahl der Hex-Codes immner konstant ==9 (bzw. =8+crc)?</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418791</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 23 Sep 2014 10:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Zahl aus Datei auslesen on Tue, 23 Sep 2014 14:43:09 GMT]]></title><description><![CDATA[<p>Ich habe meine Bedingungen noch nicht implementiert. Ich wollte das Skript als Vorlage nehmen und wusste nicht wie ich die Bedingungen einbaue.</p>
<blockquote>
<p>. noch ein paar Fragen zum Format:<br />
wenn kein 'YES' da steht, was steht dann da?<br />
kann außer 't=..' am Ende der zweiten Zeile noch etwas anderes ähnliches stehen (z.B. a=..)?<br />
Ist die Anzahl der Hex-Codes immner konstant ==9 (bzw. =8+crc)?</p>
</blockquote>
<p>Wenn YES nicht dort steht, dann steht dort NO.<br />
Und das t= steht dort immer. Die Anzahl der Hexcodes ist auch konstant.</p>
<p>Danke im Voraus<br />
Gruß<br />
Julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2418827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2418827</guid><dc:creator><![CDATA[julianpe]]></dc:creator><pubDate>Tue, 23 Sep 2014 14:43:09 GMT</pubDate></item></channel></rss>