<?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[Textdatei einlesen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand auf der Suche nach dem Fehler in folgendem Code weiterhelfen? Der Code soll Fließkommazahlen von einer Textdatei abwechselnd in zwei zweidimensionale Arrays einlesen. Das einlesen von Fließkommazahlen in eine Textdatei ist grundsätzlich nicht mein Problem. Ich frage mich nur, was ich bei DIESEM Code falsch gemacht habe. Die zuerst eingelesene Zahl (Variable &quot;number&quot;) gibt die Anzahl der einzulesenden Paare pro Array an.</p>
<pre><code class="language-cpp">int readFile(char *filename, double (**pic1)[2], double (**pic2)[2])
{
    ifstream in(filename);

    if (!in) return 0;

    int number;
    in &gt;&gt; number;

    *pic1=(double (*)[2])malloc(number*sizeof(double[2]));
    *pic2=(double (*)[2])malloc(number*sizeof(double[2]));
    if(!pic1 || !pic2){
      fprintf(stderr, &quot;Memory allocation request failed!\n&quot;);
      exit(1);
    }

    for (int i=0; i&lt;number; i++) {
	in &gt;&gt; pic1[i][0] &gt;&gt; pic1[i][1];
	in &gt;&gt; pic2[i][0] &gt;&gt; pic2[i][1];
    }
    return 1;
}

int main(int argc, char *argv[])
{
    double (*pic1)[2], (*pic2)[2];

    //...

    if (readFile(inputfile, &amp;pic1, &amp;pic2) == 0) {
	printf(&quot;ERROR: Reading error!\n&quot;);
	exit(1);
    }
}
</code></pre>
<p>Und hier die Fehlermeldung:</p>
<pre><code>g++ -Wall -o task1 task1.cpp                                                                                                 
task1.cpp: In function ‘int readFile(char*, double (**)[2], double (**)[2])’:                                                
task1.cpp:28: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; *(*(pic1 + ((unsigned int)(((unsigned int)i) * 4u))))’              
/usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/../../../../include/c++/4.3.2/istream:123: note: candidates are: std::basic_istream&lt;_CharT, _Traits&gt;&amp; std::basic_istream&lt;_CharT, _Traits&gt;::operator&gt;&gt;(std::basic_istream&lt;_CharT, _Traits&gt;&amp; (*)(std::basic_istream&lt;_CharT, _Traits&gt;&amp;)) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/250791/textdatei-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 20:54:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250791.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Sep 2009 08:49:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textdatei einlesen on Thu, 24 Sep 2009 08:50:58 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand auf der Suche nach dem Fehler in folgendem Code weiterhelfen? Der Code soll Fließkommazahlen von einer Textdatei abwechselnd in zwei zweidimensionale Arrays einlesen. Das einlesen von Fließkommazahlen in eine Textdatei ist grundsätzlich nicht mein Problem. Ich frage mich nur, was ich bei DIESEM Code falsch gemacht habe. Die zuerst eingelesene Zahl (Variable &quot;number&quot;) gibt die Anzahl der einzulesenden Paare pro Array an.</p>
<pre><code class="language-cpp">int readFile(char *filename, double (**pic1)[2], double (**pic2)[2])
{
    ifstream in(filename);

    if (!in) return 0;

    int number;
    in &gt;&gt; number;

    *pic1=(double (*)[2])malloc(number*sizeof(double[2]));
    *pic2=(double (*)[2])malloc(number*sizeof(double[2]));
    if(!pic1 || !pic2){
      fprintf(stderr, &quot;Memory allocation request failed!\n&quot;);
      exit(1);
    }

    for (int i=0; i&lt;number; i++) {
	in &gt;&gt; pic1[i][0] &gt;&gt; pic1[i][1];
	in &gt;&gt; pic2[i][0] &gt;&gt; pic2[i][1];
    }
    return 1;
}

int main(int argc, char *argv[])
{
    double (*pic1)[2], (*pic2)[2];

    //...

    if (readFile(inputfile, &amp;pic1, &amp;pic2) == 0) {
	printf(&quot;ERROR: Reading error!\n&quot;);
	exit(1);
    }
}
</code></pre>
<p>Und hier die Fehlermeldung:</p>
<pre><code>g++ -Wall -o task1 task1.cpp                                                                                                 
task1.cpp: In function ‘int readFile(char*, double (**)[2], double (**)[2])’:                                                
task1.cpp:28: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; *(*(pic1 + ((unsigned int)(((unsigned int)i) * 4u))))’              
/usr/lib/gcc/i586-manbo-linux-gnu/4.3.2/../../../../include/c++/4.3.2/istream:123: note: candidates are: std::basic_istream&lt;_CharT, _Traits&gt;&amp; std::basic_istream&lt;_CharT, _Traits&gt;::operator&gt;&gt;(std::basic_istream&lt;_CharT, _Traits&gt;&amp; (*)(std::basic_istream&lt;_CharT, _Traits&gt;&amp;)) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1783444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783444</guid><dc:creator><![CDATA[Siegfried1]]></dc:creator><pubDate>Thu, 24 Sep 2009 08:50:58 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei einlesen on Thu, 24 Sep 2009 09:36:05 GMT]]></title><description><![CDATA[<p><code>pic1[i][0]</code> is still an array. It is not a <code>double</code> .</p>
<p>I think, the correct syntax will be: <code>(*pic1)[i][0]</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783478</guid><dc:creator><![CDATA[SAn]]></dc:creator><pubDate>Thu, 24 Sep 2009 09:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to Textdatei einlesen on Thu, 24 Sep 2009 18:41:21 GMT]]></title><description><![CDATA[<p>Verwende in C++ besser std::vector&lt;double&gt; und du brauchst dich dann auch um die Speicherallokation nicht selber zu kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1783782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1783782</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 24 Sep 2009 18:41:21 GMT</pubDate></item></channel></rss>