<?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[fread ließt nicht ordenlich ein]]></title><description><![CDATA[<p>habe ein problem mit folgender funktion</p>
<p>void Socket::SendFiles(const char *filename)<br />
{<br />
FILE *resource = NULL;<br />
char buf[1024];</p>
<p>//printf ( &quot;file_found Server will send: %s&quot;, filename );</p>
<pre><code class="language-cpp">resource = fopen(filename, &quot;rb&quot;);
 if (resource == NULL)
 {
  printf ( &quot;not_found: %s&quot;, filename );
 }
 else
 {
      while(fread(buf, strlen(buf), 1, resource) &gt; 0)
      { 
         send(s_, buf, strlen(buf), 0);
         printf ( &quot;line to send: %s&quot;, buf );
      }

 }
 fclose(resource);
}
</code></pre>
<p>das problem dabei ist der buffer ist 1024 daher müsste er meiner meinung nach 1024byte einlesen und dann ausgeben das funktioniert aber lustigerweise nicht<br />
er sendet 20byte große stücke und die datei ist auch nicht vollständig</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118242/fread-ließt-nicht-ordenlich-ein</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 10:24:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118242.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Aug 2005 14:24:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 14:24:31 GMT]]></title><description><![CDATA[<p>habe ein problem mit folgender funktion</p>
<p>void Socket::SendFiles(const char *filename)<br />
{<br />
FILE *resource = NULL;<br />
char buf[1024];</p>
<p>//printf ( &quot;file_found Server will send: %s&quot;, filename );</p>
<pre><code class="language-cpp">resource = fopen(filename, &quot;rb&quot;);
 if (resource == NULL)
 {
  printf ( &quot;not_found: %s&quot;, filename );
 }
 else
 {
      while(fread(buf, strlen(buf), 1, resource) &gt; 0)
      { 
         send(s_, buf, strlen(buf), 0);
         printf ( &quot;line to send: %s&quot;, buf );
      }

 }
 fclose(resource);
}
</code></pre>
<p>das problem dabei ist der buffer ist 1024 daher müsste er meiner meinung nach 1024byte einlesen und dann ausgeben das funktioniert aber lustigerweise nicht<br />
er sendet 20byte große stücke und die datei ist auch nicht vollständig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853479</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 14:24:31 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 14:29:54 GMT]]></title><description><![CDATA[<p>fread benutz sizeof(buf) und bei send benutz den rückgabewert von fread</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853484</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Tue, 16 Aug 2005 14:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:04:41 GMT]]></title><description><![CDATA[<p>so hab die funktion jetzt erstmal so abgeändert</p>
<pre><code class="language-cpp">void Socket::SendFiles(const char *filename)
{
 FILE *resource = NULL;
 char buf[1024];

//printf ( &quot;file_found Server will send: %s&quot;, filename );

 resource = fopen(filename, &quot;rb&quot;);
 if (resource == NULL)
 {
  printf ( &quot;not_found: %s&quot;, filename );
 }
 else
 {
      while(fread(buf, sizeof(buf), 1, resource) &gt; 0)
      { 
         send(s_, buf, strlen(buf), 0);
         printf ( &quot;line to send: %s&quot;, buf );
      }
         printf ( &quot;line to send2: %s&quot;, buf );
 }
 fclose(resource);
}
</code></pre>
<p>problem jetze er eht nicht mehr in die schleife aber wie printf line to send2 zeigt befindet sich anschließend die ganze datei(819byte) in buf<br />
nur warum stimmt die schleife nicht mehr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853508</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:28:13 GMT]]></title><description><![CDATA[<p>Der tip von asdfasdf war anders gemeint</p>
<pre><code class="language-cpp">void Socket::SendFiles(const char *filename){
  FILE *resource = NULL;
  char buf[1024];
  int sizeRead;
  resource = fopen(filename, &quot;rb&quot;);
  if (resource == NULL) {
    printf ( &quot;not_found: %s&quot;, filename );
  }
  else {
     while( ( sizeRead=fread(buf, sizeof(buf), 1, resource)) &gt; 0 ) { //wieviel wurde gelesen
        send(s_, buf, sizeRead, 0);
     }
     fclose(resource); // wenns nicht offen ist muss man auch nicht schliessen
  }
}
</code></pre>
<p>dann sollte es auch für binäre Dateien und nicht nur Textdateien funktionieren.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853516</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:33:25 GMT]]></title><description><![CDATA[<p>wieder das selbe problem er geht nicht nicht in die while schleife</p>
<p>nur warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853522</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:34:15 GMT]]></title><description><![CDATA[<p>hör auf binäre daten auf der konsole auszugeben. und wenn dann mach wenigstens die 0 terminierung hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853523</guid><dc:creator><![CDATA[.f]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:39:59 GMT]]></title><description><![CDATA[<p>Skippy schrieb:</p>
<blockquote>
<p>wieder das selbe problem er geht nicht nicht in die while schleife</p>
<p>nur warum?</p>
</blockquote>
<p>Woraus schliesst du das er nicht in die Schleife kommt. Welchen Wert hat sizeRead.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853525</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:46:20 GMT]]></title><description><![CDATA[<p>schließen tue eich das aus folgendem</p>
<pre><code class="language-cpp">while( ( sizeRead=fread(buf, sizeof(buf), 1, resource)) &gt; 0 ) { 
          printf ( &quot;line to send: %s&quot;, buf );
       send(s_, buf, sizeRead, 0);
     }
         printf ( &quot;line to send2: %s&quot;, buf );
     fclose(resource); // wenns nicht offen ist muss man auch nicht schliessen
  }
}
</code></pre>
<p>das erste printf wird nicht in der konsole angezeigt auch nciht mit leerer variabel<br />
das 2 aber schon und zwar mit der kompletten datei(189byte) und daraus kann man sehr gut schließen das er nicht die schleife ausführt sondern einfach weiter macht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853534</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:46:20 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:50:33 GMT]]></title><description><![CDATA[<p>Kann ich kaum glauben. Lass das 2. printf weg.<br />
BTW dein Buffer ist nicht 0-terminiert wie .f schon sagte.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853541</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:55:04 GMT]]></title><description><![CDATA[<pre><code>fread(buf, sizeof(buf), 1, resource)
</code></pre>
<p>Das hier liest keine 1024 Zeichen wie gewünscht. sizeof(buf) gibt bestimmt 4 zurück = sizeof char. Benutz das bitte so:</p>
<pre><code>fread(buf, sizeof(char)*1024, 1, resource);
</code></pre>
<p>rya.<br />
Scorcher24</p>
<p>edit: Vergiss es, hab da was missverstanden... *grummel* *peinlich*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853544</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:55:38 GMT]]></title><description><![CDATA[<blockquote>
<p>sizeof(buf) gibt bestimmt 4 zurück</p>
</blockquote>
<p>Nicht raten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853545</guid><dc:creator><![CDATA[tipp]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 15:55:58 GMT]]></title><description><![CDATA[<p>*grins*lasst meine konsole doch in ruhe so kann ich es zu testzwecken am einfachsten anschaun sobalt die funktion funzt kommen die doch raus</p>
<p>übrigens fread hatt den rückgabewert 0 fand folgendes dazu bei google</p>
<blockquote>
<p>fread</p>
<p>Prototyp : size_t fread(void *ptr, size_t size, size_t n, FILE *stream);<br />
Header : &lt;stdio.h&gt;</p>
<p>Beschreibung :<br />
fread liest n Datenelemente, die jeweils die Größe size Bytes haben, aus dem angegebenen Stream in den Speicherbereich, auf den ptr zeigt. Es werden insgesamt (n * size) Bytes gelesen.</p>
<p>Rückgabewert :<br />
fread liefert bei fehlerfreier Ausführung die Anzahl der gelesenen Datenelemente (nicht Bytes) zurück. Im Falle eines Fehlers oder am Dateiende wird die Anzahl von Elementen (möglicherweise 0) zurückgeliefert, die noch fehlerfrei gelesen werden konnten.</p>
</blockquote>
<p>also kann ich das mit der while schleife so schon mal vergessen mein problem ist das ich das mit eof hatte auch irgendwie verhaspelt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853546</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 15:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 16:03:27 GMT]]></title><description><![CDATA[<p>Ok jetzt weiss ich was fasch gelaufen ist<br />
es muss heissen</p>
<pre><code class="language-cpp">while( ( sizeRead=fread( buf,1, sizeof(buf), resource)) &gt; 0 ) {
</code></pre>
<p>Der rückgabewert war null da du null mal 1024 bytes gelesen hast ( waren ja nur 189 )<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853553</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 16:44:46 GMT]]></title><description><![CDATA[<p>so habe das jetzt mal nochmal mit eof probiert</p>
<pre><code class="language-cpp">while(!feof(resource))
      { 
          fread(buf, sizeof(buf), 1, resource);
         send(s_, buf, strlen(buf), 0);
      }
 }
 fclose(resource);
}
</code></pre>
<p>habe &quot;buf&quot; mal auf 24 gesetzt</p>
<p>jetzt steht nach jedem inhalt von buf noch 0ù¼</p>
<p>habe dann spaßenshalber strlen(buf) durch strlen(buf)-3 ersetzt<br />
dann war das weg dafür bleibt aber am ende der datei noch 3sonderzeichen die dort nicht hingehören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853577</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:44:46 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 16:53:28 GMT]]></title><description><![CDATA[<p>Wie gesagt Du kannst es ruhig so machen nur send wird so wie du's machst nicht richtig funktionieren. ( der buffer ist nicht 0-terminiert -&gt; was strlen(buffer) zurückgibt ist <strong>undefiniert</strong> und bei binären dateien funktionierts sowieso nicht ). Jetzt reichts mir aber.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853581</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 16:53:28 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 17:21:04 GMT]]></title><description><![CDATA[<p>hab gedacht ihr redet von der console das ich dafür mit null terminieren muss</p>
<p>while(!feof(resource))<br />
{<br />
fread(buf, sizeof(buf)-1, 1, resource);<br />
buf [24] = '\0';<br />
send(s_, buf, strlen(buf), 0);<br />
}<br />
}</p>
<p>bringt mir lustigerweise den fehler das jetzt der letzte &quot;buf&quot; der ja nicht komplett ist nochmal angehängt wird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853595</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 17:29:22 GMT]]></title><description><![CDATA[<p>Mein allerletzter Versuch.<br />
Du kannst strlen() nicht benutzen da du so wie du fread verwendest nicht weist wieviele bytes von fread gelesen wurden.<br />
Wenn du es so machst</p>
<pre><code class="language-cpp">while( ( sizeRead=fread( buf,1, sizeof(buf), resource)) &gt; 0 ) {
</code></pre>
<p>dann brauchst du kein strlen() und fread gibt dir die anzahl der gelesenen bytes zurück.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853599</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 17:52:52 GMT]]></title><description><![CDATA[<p>problem dabei ist aber das er dann nur byteweise einlesen tut da hätte ich bei fgetc bleiben können wollte ja extra von diesen byteweise einlesen weg da das blockweise schneller ist und weniger prozessorlastig wäre.</p>
<p>und die idee per fseek die dateigröße bestimmen (bzw ich hab ne funktion schon gebastelt die es von windows ausliest brauchte also den char einfach nur dieser funktion übergeben) und dann alles in einen der größe angepassten buffer packen fällt ja auch weg da der server dann keine dateien im gigabyte bereich senden könnte (jedenfalls nicht sinnvoll)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853610</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 17:56:42 GMT]]></title><description><![CDATA[<p>Zuk, den Rückgabewert von fread kann man glaub ich doch nicht für send verwenden, weil es nicht die gelesenen Bytes zurückgibt. Hab mich wohl vertan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853612</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 17:59:55 GMT]]></title><description><![CDATA[<p>ach das funktioniert doch. man muss nur die parameter bei fread vertauschen:</p>
<p>richtig:</p>
<p>fread(buf, 1, sizeof(buf), file);</p>
<p>falsch:</p>
<p>fread(buf, sizeof(buf), 1, pFile);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853613</guid><dc:creator><![CDATA[asdfasdf]]></dc:creator><pubDate>Tue, 16 Aug 2005 17:59:55 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:03:28 GMT]]></title><description><![CDATA[<p>doch so wie er es hat geht es da fread die anzahl der &quot;lesevorgänge&quot; angiebt</p>
<p>und wenn ich sizeof(buf) * 1 Byte lese (und sizeof(buf)=1024ist) dann gibt fread mir die anzahl der gelesen bytes zurück wenn man aber so mit fread umgeht dann kann man sich mit mir auf eine stufe stellen und sollte das programmieren lieber lassen denn im den fall ist fread schwieriger vom code und sogar langsamer als fgetc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853614</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:09:28 GMT]]></title><description><![CDATA[<p>ich denke da wird nicht byteweise eingelesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853617</guid><dc:creator><![CDATA[denker]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:10:27 GMT]]></title><description><![CDATA[<p>also ich meine der wird intern wohl size * count direkt einlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853619</guid><dc:creator><![CDATA[denker]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:10:27 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:14:21 GMT]]></title><description><![CDATA[<p>benutz einfach die datei ein/ausgabe möglichkeiten von c++. da gibts nicht so ein behinderten count parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853626</guid><dc:creator><![CDATA[:mad:]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:26:16 GMT]]></title><description><![CDATA[<p>so sieht fread bei visual c++ aus. skippy könnte recht haben mit dem byteweise...</p>
<p><a href="http://rafb.net/paste/results/ms1IHi57.html" rel="nofollow">http://rafb.net/paste/results/ms1IHi57.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/853634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853634</guid><dc:creator><![CDATA[denker]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to fread ließt nicht ordenlich ein on Tue, 16 Aug 2005 18:28:05 GMT]]></title><description><![CDATA[<p>oder doch nicht:</p>
<p>da wird ja folgendes gemacht:</p>
<p>if ( (count = total = size * num) == 0 )</p>
<p>na ja ich halt mich besser raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/853636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/853636</guid><dc:creator><![CDATA[denker]]></dc:creator><pubDate>Tue, 16 Aug 2005 18:28:05 GMT</pubDate></item></channel></rss>