Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Will nicht weiterlesen
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  8 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Burkhard Schultheis  
View profile   Translate to Translated (View Original)
 More options Jul 27 2012, 1:39 pm
Newsgroups: de.comp.os.ms-windows.programmer
From: Burkhard Schultheis <burkhard.schulth...@web.de>
Date: Fri, 27 Jul 2012 19:39:07 +0200
Local: Fri, Jul 27 2012 1:39 pm
Subject: Will nicht weiterlesen
Ich habe hier ein ganz komisches Problem, das mich derzeit fast
verzweifeln l sst. Unter Linux kein Problem, unter Windows aber schon:

Es sollte auf einen Rutsch eine komplette Datei eingelesen werden. Dazu
wurde mit fread alles in einen Puffer eingelesen. Ich musste dann
feststellen, dass im Gegensatz zu Linux die Datei nicht komplett
eingelesen wurde, sondern nur exakt 261040 statt 282260 Zeichen. Ich
habe dann die folgende Schleife programmiert, um die Datei komplett
einzulesen:

for (gelesen = 0;
      gelesen < file_size;
      gelesen += anz)
     {
         anz = (int) fread (&buf [gelesen], 1, file_size - gelesen, file);
     }

Dabei sind gelesen, anz und file_size nat rlich Integerwerte. Aber es
werden immer nur 261040 Bytes beim ersten Mal gelesen, dann werden in
jedem Durchgang keine Bytes mehr gelesen.

Ich habe jetzt gerade gedacht, es k nne etwas damit zu tun haben, wie
die Datei ge ffnet wird, weil die Gr e der entsprechenden Linux-Datei
in etwa 261000 Bytes ist. Aber wenn einen Datei mit fopen im Modus "r"
ge ffnet wird, muss sie sich doch wie beschrieben verarbeiten lassen,
oder mache ich da einen Denkfehler? Im Puffer sehe ich auch lauter 0D0A,
also m sste doch bis zum Ende gelesen werden!

Was ist da falsch?

bersetzt wird das ganze immer noch mit VS 6! :-(

Gr e
Burkhard


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Heiko Rost  
View profile   Translate to Translated (View Original)
 More options Jul 27 2012, 1:53 pm
Newsgroups: de.comp.os.ms-windows.programmer
From: Heiko Rost <heiko.r...@gmx.de>
Date: Fri, 27 Jul 2012 19:53:28 +0200
Local: Fri, Jul 27 2012 1:53 pm
Subject: Re: Will nicht weiterlesen
Am Fri, 27 Jul 2012 19:39:07 +0200 schrieb Burkhard Schultheis:

> Es sollte auf einen Rutsch eine komplette Datei eingelesen werden. Dazu
> wurde mit fread alles in einen Puffer eingelesen. Ich musste dann
> feststellen, dass im Gegensatz zu Linux die Datei nicht komplett
> eingelesen wurde, sondern nur exakt 261040 statt 282260 Zeichen.
> ...
> Aber wenn einen Datei mit fopen im Modus "r"
> ge ffnet wird, muss sie sich doch wie beschrieben verarbeiten lassen,
> oder mache ich da einen Denkfehler?

Schu ins Blaue: Die Datei wird mit "r" im Textmode ge ffnet und an
Position 261040 steht ein ^z, das als EOF interpretiert wird. Du
solltest "rb" f r den Modus probieren.

Gru Heiko


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Burkhard Schultheis  
View profile   Translate to Translated (View Original)
 More options Jul 27 2012, 2:31 pm
Newsgroups: de.comp.os.ms-windows.programmer
From: Burkhard Schultheis <burkhard.schulth...@web.de>
Date: Fri, 27 Jul 2012 20:31:58 +0200
Local: Fri, Jul 27 2012 2:31 pm
Subject: Re: Will nicht weiterlesen
Am 27.07.2012 19:53, schrieb Heiko Rost:

> Am Fri, 27 Jul 2012 19:39:07 +0200 schrieb Burkhard Schultheis:

>> Es sollte auf einen Rutsch eine komplette Datei eingelesen werden. Dazu
>> wurde mit fread alles in einen Puffer eingelesen. Ich musste dann
>> feststellen, dass im Gegensatz zu Linux die Datei nicht komplett
>> eingelesen wurde, sondern nur exakt 261040 statt 282260 Zeichen.
>> ...
>> Aber wenn einen Datei mit fopen im Modus "r"
>> ge ffnet wird, muss sie sich doch wie beschrieben verarbeiten lassen,
>> oder mache ich da einen Denkfehler?

> Schu ins Blaue: Die Datei wird mit "r" im Textmode ge ffnet und an
> Position 261040 steht ein ^z, das als EOF interpretiert wird. Du
> solltest "rb" f r den Modus probieren.

Daran habe ich auch schon gedacht. Ist aber kein ^z in der ganzen Datei
zu finden!

Ich werde bers Wochenende mal mit einem ganz simplen Programm der Datei
zu Leibe r cken, unter Windows und Linux.

Gr e
Burkhard


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Stefan Reuther  
View profile   Translate to Translated (View Original)
 More options Jul 27 2012, 2:56 pm
Newsgroups: de.comp.os.ms-windows.programmer
From: Stefan Reuther <stefan.n...@arcor.de>
Date: Fri, 27 Jul 2012 20:56:47 +0200
Local: Fri, Jul 27 2012 2:56 pm
Subject: Re: Will nicht weiterlesen

Burkhard Schultheis wrote:
> Am 27.07.2012 19:53, schrieb Heiko Rost:
>> Am Fri, 27 Jul 2012 19:39:07 +0200 schrieb Burkhard Schultheis:
>>> Aber wenn einen Datei mit fopen im Modus "r"
>>> geöffnet wird, muss sie sich doch wie beschrieben verarbeiten lassen,
>>> oder mache ich da einen Denkfehler?

>> Schuß ins Blaue: Die Datei wird mit "r" im Textmode geöffnet und an
>> Position 261040 steht ein ^z, das als EOF interpretiert wird. Du
>> solltest "rb" für den Modus probieren.

> Daran habe ich auch schon gedacht. Ist aber kein ^z in der ganzen Datei
> zu finden!

Dennoch wirst du mit Modus "r" weniger Bytes erhalten, als dir 'dir'
anzeigt, weil der aus den 0D0A in der Datei ein einzelnes '\n' macht.
Schau dir mal an, was 'ftell' sagt. Und dann öffne die Datei mit "rb".

Deine Aussage, dass du im Puffer 0D0A siehst, widerspricht eigentlich
der Aussage, dass du die Datei mit "r" öffnest.

  Stefan


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Claus Reibenstein  
View profile   Translate to Translated (View Original)
 More options Jul 27 2012, 4:20 pm
Newsgroups: de.comp.os.ms-windows.programmer
From: Claus Reibenstein <4spamerso...@kabelmail.de>
Date: Fri, 27 Jul 2012 22:20:52 +0200
Local: Fri, Jul 27 2012 4:20 pm
Subject: Re: Will nicht weiterlesen
Burkhard Schultheis schrieb:

> Ich habe hier ein ganz komisches Problem, das mich derzeit fast
> verzweifeln l sst. Unter Linux kein Problem, unter Windows aber schon:

> Es sollte auf einen Rutsch eine komplette Datei eingelesen werden. Dazu
> wurde mit fread alles in einen Puffer eingelesen. Ich musste dann
> feststellen, dass im Gegensatz zu Linux die Datei nicht komplett
> eingelesen wurde, sondern nur exakt 261040 statt 282260 Zeichen.

Doch, sie wurde komplett eingelesen. Du hast nur bersehen, dass
Zeilenvorsch be in Windows-Textdateien aus zwei Bytes (\r\n) bestehen,
in C aber nur aus einem Byte (\n). Beim Einlesen wird das entsprechend
konvertiert.

Beim Schreiben passiert dann genau das Gegenteil: Aus dem einen Byte in
C werden in der Datei zwei. Das kannst Du einfach pr fen, indem Du den
gelesenen Dateiinhalt mal in eine neue Textdatei schreibst und Dir
anschlie end deren Gr e anschaust.

Die gleiche Textdatei hat unter Linux nat rlich nur 261040 Zeichen, weil
der Zeilenvorschub bei Linux-Textdateien nur aus einem Byte besteht (\n).

> Was ist da falsch?

Gar nichts. Ist alles in bester Ordnung.

Gru
Claus


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Burkhard Schultheis  
View profile   Translate to Translated (View Original)
 More options Jul 30 2012, 3:18 am
Newsgroups: de.comp.os.ms-windows.programmer
From: Burkhard Schultheis <burkhard.schulth...@web.de>
Date: Mon, 30 Jul 2012 09:18:37 +0200
Local: Mon, Jul 30 2012 3:18 am
Subject: Re: Will nicht weiterlesen
Am 27.07.2012 22:20, schrieb Claus Reibenstein:

Ja, ihr habt alle Recht! Aber was ich nicht in Ordnung finde, ist die
Tatsache, dass unter Windows nach dem Dateiinhalt noch Schrott kommt:
Mein Puffer, der so gro ist wie die Datei mit den CRs, wurde am Ende
mit Schrott aufgef llt (er war vorher mit Nullen initialisiert). Auch,
wenn das nicht spezifiziert ist, finde ich es nicht gerade toll.

Gr e
Burkhard


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edzard Egberts  
View profile   Translate to Translated (View Original)
 More options Jul 30 2012, 3:40 am
Newsgroups: de.comp.os.ms-windows.programmer
From: Edzard Egberts <ed...@tantec.de>
Date: Mon, 30 Jul 2012 09:40:52 +0200
Local: Mon, Jul 30 2012 3:40 am
Subject: Re: Will nicht weiterlesen
Burkhard Schultheis schrieb:

> Ja, ihr habt alle Recht! Aber was ich nicht in Ordnung finde, ist die
> Tatsache, dass unter Windows nach dem Dateiinhalt noch Schrott kommt:
> Mein Puffer, der so gro ist wie die Datei mit den CRs, wurde am Ende
> mit Schrott aufgef llt (er war vorher mit Nullen initialisiert). Auch,
> wenn das nicht spezifiziert ist, finde ich es nicht gerade toll.

Selber Schuld, Deine Routine zum Einlesen geht so nicht. Du liest ber
"Filesize", die ndert sich aber beim Einlesen durch den CR-Murks. Da
musst Du entweder unter beiden Systemen immer bin r lesen, oder unter
beiden System immer zeilenweise lesen. Mit C++ geschrieben k nnte das
z.B. so aussehen:

#include <string>
#include <fstream>
#include <list>

using namespace std;

string Line;
list< string > Lines;

fstream In(Name.c_str(), ios_base::in);
while (In.good() && In.peek()!= EOF)
{
        getline(In, Line);
        if (In.good()) Lines.push_back(Line);

}

In.close();

Dieser Code w rde sowohl unter Windows, als auch unter Linux funktionieren.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Burkhard Schultheis  
View profile   Translate to Translated (View Original)
 More options Jul 30 2012, 4:06 am
Newsgroups: de.comp.os.ms-windows.programmer
From: Burkhard Schultheis <burkhard.schulth...@web.de>
Date: Mon, 30 Jul 2012 10:06:30 +0200
Local: Mon, Jul 30 2012 4:06 am
Subject: Re: Will nicht weiterlesen
Am 30.07.2012 09:40, schrieb Edzard Egberts:

Ich habe es inzwischen so gel st, dass ich einfach nach der Anzahl
gelesener Bytes ein Null-Byte schreibe. So bin ich zufrieden! ;-)

Gr e
Burkhard


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »