Probleme mit der Funkton "Struct"
-
Hallo alle zusammen,
ich versuche bereitsseit einigen tagen ein von mir erstelltes kleines Programm zum laufen zu bringen, aber es klappt nicht!
Das Problem ist, ich kann nicht die Daten aus "struct" an eine externe Funktion weitergeben, diese Funktion soll die daten verarbeiten und wieder in main() und wider in struckt abspeichern :/..
Das Programm sieht so aus:
#include <stdio.h> int (data.a) { printf("die zahl ist %s\n", data.a); return 0; } void main() { struct{ char a[8]; }data; printf("Bitte geben Sie eine Zahl a ein:"); scanf("%s", hallo.a); printf("\n"); print(hallo.a); }
Wo ist der Fehler??
-
Hallo
Was hast du damit vor?
Ok, gehen wir das mal an:
Zeile 3:
Eine Integer-Funktionsdeklarierung erwartet ein Funktions- bzw. Pseudonymnamen. Außerdem kannst du nicht einfach als Parameter irgendeine lokale Variable reintippen. (Bist du vielleicht ehemaliger Python-Programmierer?)
Dann bringt es erstmal nichts die Funktion als Integer zu deklarieren, wenn du sowieso 0 returnst. Eine normale void-Deklaration sollte es also auch tun.Zeile 13:
Bitte keine Zeilenumbrüche zwischen der Funktions-Deklaration und dem lokalen Funktionsinhalt.Zeile 16:
Strukturen werden wie in C++ wie Klassen behandelt, also am Besten ganz raus aus der Main und extra deklarieren.Zeile 17:
Warum ein Char? Du willst doch eine Ganzzahl ausgeben, vermute ich.Und ja, der Rest ist ein Trümmerhaufen...
Sollte dein Programm so in etwa aussehen?#include <stdio.h> #include <iostream> void Ausgabe(int zahl) { printf("die zahl ist %s\n", zahl); } struct Data { Data(): zahl (0) {} int zahl; }; int main(void) { Data data; printf("Bitte geben Sie eine Zahl a ein:"); scanf("%d", data.zahl); printf("\n"); Ausgabe(data.zahl); }
way
-
Sorry, ich hab jetzt einiges korregiert damit es bisschen verständlich ist
im grude sollen die daten aus struct in die funktion print() übergeben werden, damit printf() diese daten benutzen kann;
#include <stdio.h> int print(data.a) { printf("das Wort ist %s\n", data.a); return 0; } void main() { struct{ char a[8]; }data; printf("Bitte geben Sie ein Wort ein:"); scanf("%s", data.a); printf("\n"); print(data.a); }
-
du gibst den Parameter falsch an. Du musst da angeben, was die Funktion - aus Sicht der Funktion - für eine Variable entgegen nimmt und nicht das was du später an ihr übergeben willst.
int print(char const *a)
und in der Funktion entsprechend a und nicht data.a!
Außerdem heißt es int main und _nicht_ void main!
@way
hier ist das ANSI C-Forum! nix C++!
-
Hallo
Ich denke dir fehlt das grundlegende Verstnändniss von allem.
#include <stdio.h> struct Data { Data() { zahl = 0; } int zahl; }; int main(void) { Data data; data.zahl = 20; printf("%d", data.zahl); }
(@rüdiger: Hm, ist da noch was C++? ;D)
way
-
Du hast recht in bin noch neuling was das programmieren angeht;
Du machst es irgend wie komplezierter als es ist:
muss man vielleicht in der deklaration der funktion print() zeiger beunutzen, also:
void print(char *data) { printf("die zahl ist %s\n", data); }
??
-
rüdiger schrieb:
du gibst den Parameter falsch an. Du musst da angeben, was die Funktion - aus Sicht der Funktion - für eine Variable entgegen nimmt und nicht das was du später an ihr übergeben willst.
int print(char const *a)
und in der Funktion entsprechend a und nicht data.a!
Außerdem heißt es int main und _nicht_ void main!
@way
hier ist das ANSI C-Forum! nix C++!Super es funktioniert, vielen Dank!
#include <stdio.h> int print(char const *a) { printf("die zahl ist %s\n", a); return 0; } void main() { struct{ char a[8]; }data; printf("Bitte geben Sie eine Zahl a ein:"); scanf("%s", data.a); printf("\n"); print(data.a); }
Dieses *a aus "int print(char const *a)" ist ja ein formaler parameter also ein platzhalter, richtig?, welche bedeutung hat der stern?
-
way schrieb:
(@rüdiger: Hm, ist da noch was C++? ;D)
Ja
Es gibt keine Konstruktoren in C++. Wenn du den Unterschied zwischen C und C++ nicht kennst, bitte ich dich, dich damit erst zu befassen, bevor du hier versuchst zu helfen.
@Amonrah123
Du musst nochvoid main
inint main
ändern!Der "Stern" bedeutet, dass
a
ein pointer aufchar const
ist.
-
rüdiger schrieb:
Es gibt keine Konstruktoren in C++.
Doch, gibt es. Wenn du den Unterschied zwischen... ach, ich mach nur Spaß!
-
way schrieb:
... struct Data { Data(): zahl (0) {} int zahl; };
wass'n das für wirres zeug? das compiled nie und nimmer.