mikrocontroller.net

Forum: PC-Programmierung read / write / open


Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha...
Demnach mußte ich aber

char *buffer[255];

so deklarieren!

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

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Guido (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.