Forum: PC-Programmierung read / write / open


von Marcus (Gast)


Lesenswert?

Hallo!
Ich habe mal zur Programmierung in C eine Frage, wie ich am besten einen 
Wert "Hallo" einlesen und diesen anschließend wieder ausgeben kann. Nun 
ich glaube für diese Realiserung benötige ich Zeiger. Allerdings bin ich 
damit noch gar nicht fit. Deswegen hoffe ich, dass mir jemand eine 
Lösung posten kann.

Ich will mit

char buffer[255];
MyDev = open("/dev/MyDev",O_RDWR);
res = read(MyDev,buffer,255)

einen Wert einlesen und diesen in buffer speichern.
Jetzt will ich zur Kontrolle den Wert wieder ausgeben mit

res = write(MyDev, , )

So, und genau da komme ich jetzt nicht weiter.
Eigentlich muss ich soweit ich mir das richtig angelesen habe, einen 
Pointer initialisieren. Die Struktur res = write(MyDev,buffer,255) wird 
wohl kaum funktionieren!
Theoretisch muss ich den Inhalt an den write Befehl übergeben, 
allerdings habe ich keine Ahnung, wie ich dies machen soll ;-(

Kann mir jemand dafür den richtigen Lösungweg schreiben?
Danke!
Mfg Marcus

von Gerhard (Gast)


Lesenswert?

Hi

in der Regel ist es ganz einfach: Wie schaut der Funktionsprototyp 
deiner write-Funktion aus ? Da steht dann genau was due Funktion haben 
will.

Wenn buffer hier als char* gefordert ist (sei mal so), dann schreibste
res = write( MyDev, (char*)buffer,.. );

Gerhard

von Marcus (Gast)


Lesenswert?

Aha...
Demnach mußte ich aber

char *buffer[255];

so deklarieren!

Aber wie definiere ich dann den read-Befehl???

von Bernhard (Gast)


Lesenswert?

Nein, mit
 char buffer[255];
ist zwar z.B. buffer[0] vom Typ char, aber buffer ist vom Typ (char *). 
Bei den üblichen read- und write-Funktionen klappts wie Gerhard schrieb.

Wenn du es ausprobiert hast und es nicht funktioniert, mußt du uns schon 
die Fehlermeldungen schicken sowie die Funktionsdeklarationen von read 
und write. Weiter raten werde ich nämlich nicht.

von Marcus (Gast)


Lesenswert?

Ok...danke für die Hinweise...
Ich werde dies morgen umgehend an meinem Arbeitsrechner 
ausprobieren...und hoffen, dass es alles so klappt.
Falls nicht..ich melde mich...
Jeder fängt einmal klein an...
Mfg Marcus

von Rolf Magnus (Gast)


Lesenswert?

> Nein, mit
>  char buffer[255];
> ist zwar z.B. buffer[0] vom Typ char, aber buffer ist vom Typ (char *).

Nicht ganz. buffer ist ein Array und kein Zeiger. Allerdings kann ein 
Array in den meisten (aber nicht allen) Situationen wie ein Zeiger auf 
sein erstes Element behandelt werden. Die Unterscheidung ist dennoch 
sehr wichtig.

@Marcus: Du solltest auch mal einen Blick darauf werfen, was read() 
zurückgibt. Diesen Wert brauchst du beim write() nämlich wieder.

von Guido (Gast)


Lesenswert?

Read, Write, Open sind out! Schau dir mal b. Microsoft die Doku zu 
CArchive/ MFC an...
Gruß Guido

von Karl H. (kbuchegg)


Lesenswert?

Guido wrote:
> Read, Write, Open sind out! Schau dir mal b. Microsoft die Doku zu
> CArchive/ MFC an...
> Gruß Guido

Weder kann ich in der Frage erkennen, dass der OP in C++
programmiert (er erwähnt ausdrücklich C-Programmierung), noch
dass er mit einem Microsoft Compiler arbeitet, geschweige denn
mit der MFC oder überhaupt auf einem MS Betriebssystem ist.
Der Dateinamen "/dev/MyDev" lässt eher eine Vermutung in
die Unix Welt zu.

Und Read/Write/Open ist keineswegs out.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.