Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme bei der Ausgabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.03.2006, 15:19 Uhr
~htl-bn
Gast


Hallo,

Ich habe folgendens Programm geschrieben:
(Ausschnitt)


C++:
struct CD
{    int nr;
    char titel[40],
          interpret[40];
    char genre[20];
    float preis;
};



// Eingabe einer CD//

CD eingabe()
{

     CD cd;

     printf("\n\nNummer: ");
     scanf("%d",&cd.nr); fflush(stdin);
     printf("\nTitel: ");
     gets(cd.titel);
     printf("\nInterpret: ");
     gets(cd.interpret);
     printf("\nGenre: ");
     gets(cd.genre);
     printf("\nPreis: ");
     scanf("%f",&cd.preis); fflush(stdin);
     anzahl++;
     return(cd);

}



//Ausgabe der CD//

void gibAus(CD cd)
{    printf("\nCD Daten: ");
    printf("\n\n Nummer\t:    %d",cd.nr);
    printf("\n\n Titel\t:     %s", cd.titel);
    printf("\n\n Interpret\t: %s",cd.interpret);
    printf("\n\n Genre\t:     %s",cd.genre);
    printf("\n\n Preis\t:     %f", cd.preis);
    getch();
}


void gibAusListe(CD cds[])
{    printf("\nDie CDs :");
    for(int i = 0; i <anzahl; i++)
    {    gibAus(cds[i]);
    }
}



Doch anstatt das das eingegebene ausgegeben wird werden nur wilde Zeichen andere Buchstaben und Zahlen ausgegeben. Müsste aber eigentlich so stimmen oder.
Oder muss ich die mit puts eingelesenen Werte auch mit gets ausgeben?(Funktioniert aber auch nicht)
Bräuchte Hilfe!!!!!
(Habe morgen Test)






Bearbeitung:
code Tags

Dieser Post wurde am 29.03.2006 um 15:52 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.03.2006, 15:54 Uhr
mike
Pinguinhüpfer
(Operator)


bei void gibAus(CD cd) wird in der funktion wieder ein Objekt angelegt. Du musst per * oder & (je nach Sprache) die Instanz deines Objektes übergeben.
Auch galube ich, dass du mit der Eingabe was anderes bezwecken willst

lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.03.2006, 16:11 Uhr
Spacelord
Hoffnungsloser Fall


@mike:
Ist doch nen stinknormaler Call by value Aufruf .Der sollte eigentlich kein Problem darstellen.
Das ganze geht wahrscheinlich als C++ Code durch.Würdest du ,in "echtem" C ,das Schlüsselwort struct vor CD weglassen,würde der Compiler kotzen .
Bin aber auch nicht so der C Kenner.....

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.03.2006, 16:20 Uhr
~htl-bn
Gast


Wir programmieren in "echtem" C
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.03.2006, 16:28 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~htl-bn:
Wir programmieren in "echtem" C

Da hat man euch wohl belogen....

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.03.2006, 16:33 Uhr
Spacelord
Hoffnungsloser Fall


Also ich hab das gerade mal getestet und wenn ich es nicht gerade auf nen Buffer Overflow anlege arbeitet der Code zufriedenstellend.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.03.2006, 16:35 Uhr
mike
Pinguinhüpfer
(Operator)


@ Spacelord: Ja - musst war wohl das falsche Wort - stimmt - ginge auch ohne.

Trotzdem ist
CD eingabe()
{
CD cd;
..
retur(cd);
}

imo schlecht - Objekt stirbt ja nach der Funktion und wird trotzdem retourniert.
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.03.2006, 16:42 Uhr
Spacelord
Hoffnungsloser Fall


Der Code ist übermässig teuer aber nicht unsicher(bezogen auf die Parameterübergabe und Rückgabe....gets ist nicht so Knaller).
Die Rückgabe findet ja auch per Kopie statt deshalb stellt es kein Problem dar dass das lokale CD "Objekt" am Ende der Funktion vom Stack fliegt.Nen Problem wäre es wenn du ne Referenz (wenn es denn in C welche geben würde) auf das lokale CD Objekt zurück geben würdest.
Unterm Strich hast du aber Recht dass das Ganze mit nem Zeiger auf die "zu beschreibende" CD Struktur schöner wäre.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 29.03.2006 um 16:43 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.03.2006, 16:46 Uhr
~htl-bn
Gast


Also ich blicke jetzt überhaupt nicht mehr durch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.03.2006, 16:59 Uhr
mike
Pinguinhüpfer
(Operator)


@ Spacelord: stimmt - ist sogar richtig. Durch das ganze Pointer/Referenz Zeuchs hab ich voll den Durchblick verloren :S Ich bin jetzt lieber still und lies mit - kommt doch nur Blödsinn raus wenn ich poste
Hab noch mal nachgeschaut: Nen Pointer auf das in der Funktion erstellte Objekt darf man nicht halten - is doch logisch
--

Dieser Post wurde am 29.03.2006 um 17:01 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: