Problem: Wertrückgabe mit Funktion

Bastereo

Grünschnabel
Hi Leute,

ich habe mal eine Frage und zwar programmiere ich gerade ein Programm mit C. Der Inhalt ist gar nicht so sehr das entscheidene, sondern mehr folgendes:

Ich habe eine Benutzereingabe in einer Funktion und gebe den eingegebene Wert mit return zurück in das main-Programm. Dort wird der Wert aber nicht so richtig erkannt, bzw. ich muss irgendwas anders oder geschickter deklarieren. Stehe gerade aufem Schlauch und seh das Brett vorm Kopf nicht, oder so ähnlich. ;)
Ich hoffe ihr könnt mir helfen, denn das ist bisschen ärgerlich grad. :)

Fehlermeldung: Die variable "auswahl" ist gebraucht, ohne initalisiert zu sein.
Wie löse ich das geschickter?

Code:
#include <stdio.h>

int eingabe(int auswahl);

struct bestellsystem
{
	int Bestellnummer;
	char Bezeichnung[100];
	float Preis;
};

int main(void)
{
	int auswahl;

	struct bestellsystem b1 = { 1234, "Blabla", 299.99};
	struct bestellsystem b2 = { 5678, "Blibli", 999.99};
	struct bestellsystem b3 = { 9123, "Bloblo", 1299.99};

	printf("HAW Versand AG\n");

	eingabe(auswahl);

	if(auswahl==1)
	{
		printf("\nBestell-Nummer: ");
		printf("\nProduktbezeichnung: ");
		printf("\nPreis: ");
	}

	if(auswahl==0) return 0;

	printf("\n\n");

	return 0;

}

int eingabe(int auswahl)
{

	printf("================================\n");
	printf("1: neues Produkt eingeben\n");
	printf("2: Katalog anzeigen\n");
	printf("0: Ende\n");
	printf("================================\n");
	scanf("%d", &auswahl);

	if(auswahl < 0 || auswahl > 2)
	{
		printf("\nFehlerhafte Eingabe! Bitte erneute Eingabe: ");
		printf("\n================================\n");
		printf("1: neues Produkt eingeben\n");
		printf("2: Katalog anzeigen\n");
		printf("0: Ende\n");
		printf("================================\n");
		scanf("%d", &auswahl);
	}

	return auswahl;
}
 
Hi und Willkommen bei tutorials.de :)

zuerst was logisch Falsches bei eingabe:
Was ist, wenn der benutzer die zweite Eingabe auch falsch macht?
Statt dem if sollte ein while rein.

Zum Hauptproblem:
Du übergibst auswahl zu eingabe, obwohl es gar keinen Sinn macht.
Es soll ja nur zurückgegeben werden.
Weil du im main auswahl übergibst, ohne zuerst irgendwo einen Wert zugewiesen zu haben,
kommt die Meldung.

Lösung:
1) Das "int auswahl" bei eingabe aus den () rausnehmen
und stattdessen als erste Codezeile von eingabe nehmen.
2) Statt
C++:
eingabe(auswahl);
im main das:
C++:
auswahl = eingabe();
schreiben.

Fürs nächste Mal:
Bitte gleich die Zeile der Fehlermeldung angeben.

Gruß
 
Ich danke schonmal für die superschnell Antwort, aber hab glaub ich ein kleinen Denkblockade bei dem Problem. Danke für die Tipps.
Das hatte ich auch schon probiert, aber folgende Fehlermeldung taucht nun auf:

'eingabe': Funktion akzeptiert keine 0 Argumente
 
Hast du beide Schritte gemacht?

Code für den Ersten:
C++:
int eingabe(int auswahl)
{
wird zu
C++:
int eingabe()
{
    int auswahl;
 
Da sieht man doch tatsächlich manchmal den Wald vor lauter Bäumen nicht, meine Güte :)
Ist aufgeklärt, ich danke dir. Die Deklaration der Funktion hat man vergessen... So ein dämlicher Fehler, aber manchmal kommt man iwie nicht drauf. Jedenfalls Danke und auf Bald ;)
 
Zurück