String in seperate Datei ausgeben.... klappt nicht.?



  • zeile 17 soll einfach in die Konsole ausgegeben werden, also nur printf("...");

    jetzt klappt alles super!

    gruß



  • In Zeile 13 und 19 sind aber noch Fehler.



  • Hey DirkB, hab leider deine Anmerkung nicht gesehen bis jetzt.

    In wie weit sind die beiden Zeilen falsch?



  • Da ist jeweils das & zuviel.



  • Heißen die Zeilen nicht in Worten übersetzt:

    "lese aus buffer einen String aus und weise diesen String dname bzw farbe zu" ?

    Und muss man bei einer Zuweisung nicht ein & benutzen?



  • ser_u schrieb:

    Heißen die Zeilen nicht in Worten übersetzt:

    "lese aus buffer einen String aus und weise diesen String dname bzw farbe zu" ?

    Nein, die Anweisung sscanf(buffer,"%s",&dname); heißt "Rufe die Funktion sscanf mit den Parametern buffer, "%s" und der Adresse von dname auf", nichts weiter. Dann guckst du in die Dokumentation von sscanf, und da steht, welche Parameter welchen Typs erwartet werden und was jeweils passiert.

    Und muss man bei einer Zuweisung nicht ein & benutzen?

    Nein, eine Zuweisung geschieht mit einem =. Hier ist keine Zuweisung zu sehen. Deine sscanf-Aufrufe funktionieren, weil die Adresse eines Arrays lediglich den falschen Typ hat, aber vom Wert her gleich der Adresse des ersten Elementes ist.



  • Das ist interessant! Man hat mir im C-Kurs an der Uni beigebracht, das & unbedingt dorthinzuschreiben.

    Ich werd mal nochmal in die Dokumentation schauen und evtl. meinen Tutor fragen.



  • Ganz sicher nicht unbedingt. An die Stelle muss ein Zeiger, der auf einen Speicherbereich zeigt, in den der einzulesende Wert geschrieben werden kann.
    Da Du in diesem Fall in ein Array schreiben lassen willst, gehört dort der Arrayname, der einen Zeiger auf das erste Arrayelement repräsentiert, hin.

    Anders wäre es, wenn Du zB einen int - Wert einlesen und in eine int - Variable schreiben lassen wolltest. Dann wäre bei zB.

    int eingabeWert;
    

    die Adresse mit

    &eingabeWert
    

    ermittelbar und so auch dort zu notieren.



  • Da dname identisch zu &dname[0] ist, könntest du auch dies so schreiben, aber ersteres ist eben kürzer zu schreiben (und zu lesen, d.h. zu verstehen).



  • Okay, hab nochmal in meinen Unterlagen geblättert, und uns wurde es an der Uni selbstverständlich richtig beigebracht.

    Ich habe es nur ständig falsch ( also mit & bei Arrays) angewendet, es wurde mir aber merkwürdiger Weise nie als Fehler angestrichen.

    Danke also für eure Anmerkungen!


Anmelden zum Antworten