scanf fehler

Preference

Grünschnabel
Hallo.

ich muss für die uni ein programm schreiben und bin mir eig sicher das es klappen müsste, aber dem compiler sagt mir ständig das scanf ignoriert wird...
vlt könnt ihr mir ja sagen warum.

es ist noch nicht fertig.

Warnung: Der Rückgabewert von »scanf«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]

Code:
#include <stdio.h>
#include "stdlib.h"

int main()
{
	int a;
	int z1, z2, z3;

	do
	{
		printf("Programm zur Sortierung von Zahlen!\n");
		printf("-----------------------------------\n\n");

		printf("Bitte das Eingabeformat wählen!\n");
		printf("1 -- Dezimal ; 2 -- Oktal ; 3 -- Hexal\n");
		scanf("%d", &a);
	
		switch(a)
		{
			case '1':
				printf("Sie haben Dezimalzahlen ausgewählt!\n");
			break;
		
			case '2':
				printf("Sie haben Oktalzahlen ausgewählt!\n");
			break;

			case '3':
				printf("Sie haben Hexadezimalzahlen ausgewählt!\n");
			break;
		
			default:
				printf("Sie haben eine falsche Auswahl getroffen! Bitte wiederholen!\n");
		}
	}while(a > 0 && a < 4);

	printf("----------------------------------\n");

	printf("Eingabe von Zahlenwerten!\n");
	printf("-------------------------\n\n");

	if (a == '1')
	{
		printf("Bitte geben sie den ersten Zahlenwert ein!\n");
		scanf("%9d",&z1);

		printf("Bitte geben sie den zweiten Zahlenwert ein!\n");
		scanf("%9d",&z2);

		printf("Bitte geben sie den dritten Zahlenwert ein!\n");
		scanf("%9d",&z3);
	}

/*	if (value == '2')
	{
		printf("Bitte geben sie den ersten Zahlenwert ein!\n");
		z1=getchar ();

		printf("Bitte geben sie den zweiten Zahlenwert ein!\n");
		z2=getchar ();

		printf("Bitte geben sie den dritten Zahlenwert ein!\n");
		z3=getchar ();
	}

	if (value == '3')
	{
		printf("Bitte geben sie den ersten Zahlenwert ein!\n");
		z1=getchar ();

		printf("Bitte geben sie den zweiten Zahlenwert ein!\n");
		z2=getchar ();

		printf("Bitte geben sie den dritten Zahlenwert ein!\n");
		z3=getchar ();
	}*/

	printf("\n\nAusgabe******\n\n");
	printf("%d , %d , %d ", z1,z2,z3);
}
 
Es funktioniert auch. Der Compiler sagt dir nur, dass der RÜCKGABEWERT von scanf() (die Anzahl der übergebenen Variablen, die erfolgreich beschrieben wurden) ignoriert wird. Du könntest zum Beispiel schreiben:

C++:
int a, rgw;
rgw = scanf ("%d", &a);

Wenn die Eingabe erfolgreich war, steht in a die eingegebene Zahl und in rgw steht 1 weil eben eine Zahl eingegeben wurde. Der Rückgabewert von scanf() wird eigentlich sehr oft ignoriert, warscheinlich hast du in deinem Compiler irgendeine Option aktiviert, damit du, wenn der Rückgabewert ignoriert wird, eine Warnung bekommst.
Du machst also auf jeden Fall nichts Böses ;)
Du müsstest noch sagen welchen Compiler/welche Entwicklungsumgebung du nutzt, wenn du wissen möchtest, wie du die Meldungen deaktivierst.

Lg
 
Hi.

In dem Fall ist es aber gar keine gute Idee die Warnung einfach zu ignorieren bzw. gar zu unterdrücken.

Der Compiler hat nämlich recht und macht auf einen Programmierfehler aufmerksam.

Ohne den Rückgabewert zu prüfen, kannst du ja gar nicht wissen, ob der Benutzer überhaupt etwas eingegeben hat bzw. ob der Benutzer etwas anderes als eine Dezimalzahl eingegeben hat.

Deshalb sollte man immer den Rückgabewert prüfen und entsprechend reagieren bevor man mit dem Wert der Eingabevariablen weiter arbeitet.
 
Zurück