read / write / open

Gast #490899
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
Gast #490901
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
Gast #490961
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.
Gast #490977
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
Gast #491779
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.
#491898
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren