read / write / open

Gast #490899
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
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
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
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
> 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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.