Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C (C89, C99 und C11) ::  scanf und struct als zeiger     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
uwie
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.05.2012
Beiträge: 2
Beitrag uwie Mitglied 11:31:54 06.05.2012   Titel:   scanf und struct als zeiger            Zitieren

Hallo Forumianer,

ich verzweifle ..!!.. Folgendes SCANF in der eingabe-Funktion ändert einfach die Werte im Struct nicht. Lt. diversen Anleitungen im Netz und Büchern sollte es aber so funktionieren. Was mache ich falsch?

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include <conio.h>
 
struct komplex
{
    double t1;
    double t2;
};
 
void ausgabe(struct komplex z)
{
    printf("Eins: %f",z.t1);
    printf("\nZwei: %f",z.t2);
}
 
void eingabe(struct komplex *z)
{
    printf("Eins eingeben: ");
    scanf("%f",&z->t1);
    printf("\Zwei eingeben: ");
    scanf("%f",&z->t2);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    komplex z1;
    eingabe(&z1);
    ausgabe(z1);
    getch();
}


Vielen Dank für euere Mühe im voraus!

Gruß

Uwe
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1359
Beitrag icarus2 Mitglied 11:37:01 06.05.2012   Titel:              Zitieren

Versuchs mal mit
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
void ausgabe(struct komplex z)
{
    printf("Eins: %lf",z.t1);
    printf("\nZwei: %lf",z.t2);
}
 
void eingabe(struct komplex *z)
{
    printf("Eins eingeben: ");
    scanf("%f",&z->t1);
    printf("\Zwei eingeben: ");
    scanf("%f",&z->t2);
}

Du liest da einen double Wert ein und gibst einen double Wert aus. Dann brauchst du "lf" und nicht "f".
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 11:37:10 06.05.2012   Titel:   Re: scanf und struct als zeiger            Zitieren

uwie schrieb:
Was mache ich falsch?

Du lernst C.
Unregistrierter





Beitrag Unregistrierter 11:57:56 06.05.2012   Titel:              Zitieren

Macht man bei uns so.
Edit: Nein, bei uns gibt es natürlich schon eine Klasse std::complex ^^ (Aber auf dein Problem bezogen)


Zuletzt bearbeitet von Unregistrierter am 11:58:43 06.05.2012, insgesamt 1-mal bearbeitet
uwie
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.05.2012
Beiträge: 2
Beitrag uwie Mitglied 12:05:29 06.05.2012   Titel:              Zitieren

icarus2 schrieb:

Du liest da einen double Wert ein und gibst einen double Wert aus. Dann brauchst du "lf" und nicht "f".


Danke icarus2 für die superschnelle Antwort. Manchmal ist ein zusätzliches Augenpaar eben Gold wert.

Thx Uwe
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 17122
Beitrag C++ Forumbot Forumbot 12:24:25 06.05.2012   Titel:              Zitieren

Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17992
Beitrag SeppJ Moderator 12:27:26 06.05.2012   Titel:              Zitieren

uwie schrieb:
icarus2 schrieb:

Du liest da einen double Wert ein und gibst einen double Wert aus. Dann brauchst du "lf" und nicht "f".


Danke icarus2 für die superschnelle Antwort. Manchmal ist ein zusätzliches Augenpaar eben Gold wert.
Das sieht dein Compiler auch. Du musst ihm bloß sagen, dass er dich auch warnen soll, wenn ihm etwas komisch vorkommt. Compiliere immer mit maximaler Warnstufe, behandle als Anfänger Warnungen wie Fehler.

Ich wette icarus2 hat den Fehler so schnell gefunden, da er deinen Code einfach mal bei sich mit hoher Warnungsstufe compiliert hat.


edit: Jetzt habe ich deinen Thread nach C verschoben, da er aussah wie C. Ein winzigkleines Details an deinem Code funktioniert so aber nur in C++. Sei dir darüber im klaren, dass C und C++ sehr unterschiedliche Sprachen sind. Benutze für C auch einen C-Compiler! Mischen von C und C++ ist auch eine ganz schlechte Idee, sofern man sich nicht sehr genau auskennt (und wenn man sich so gut auskennt, dann macht man es sowieso nicht mehr).

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List


Zuletzt bearbeitet von SeppJ am 12:31:50 06.05.2012, insgesamt 1-mal bearbeitet
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 12:59:50 06.05.2012   Titel:              Zitieren

SeppJ schrieb:
Ich wette icarus2 hat den Fehler so schnell gefunden, da er deinen Code einfach mal bei sich mit hoher Warnungsstufe compiliert hat.

Meinst du echt, er hat dafür extra den Compiler angeschmissen?
Da schaut man doch als erstes nach. Schon alleine bei dem Titel.
c++.de :: C (C89, C99 und C11) ::  scanf und struct als zeiger   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.