scanf und scruct: fehlermeldung wegen &

will2k

Mitglied
bei diesem code bekomme ich eine warnung:

Code:
Code:
scanf("%i",derLKW.iLKWnummer);

Fehlercode:
warning: format arguement is not a pointer


ok der "ampersend" gehört vor das LKW.iLKWnummer wegen adresse usw. doch warum funktioniert das ganze ohne fehlermeldung bei strings des structs z.B.

Code:

Code:
scanf("%s",derLKW.sZielbahnhof);

da bekomme ich keine Fehlermeldung? Ja ich bekomme sogar eine extra warnung, wenn ich beim einen ampersend davorsetze
 
Hallöchen,
das ist schon richtig so. Ich nehme an, du hast so etwas:
Code:
struct LKW {
  int iLKWnummer;
  char* sZielbahnhof;
oder
  char sZielbahnhof[256];
};
Für iLKWnummer brauchst du den Ampersand bei scanf, für sZielbahnhoif nicht, weil char* bereits ein Zeiger ist. scanf braucht stets Zeiger. Auch bei "char sZielbahnhof[256]" ist sZielbhanhof bereits ein Zeiger.


(Falls dieser Tipp die Lösung ist, gib mir bitte 'ne Bewertung)
 
Zuletzt bearbeitet:
Hallöchen,
das ist schon richtig so. Ich nehme an, du hast so etwas:
Code:
struct LKW {
  int iLKWnummer;
  char* sZielbahnhof;
};
Für iLKWnummer brauchst du den Ampersand bei scanf, für sZielbahnhoif nicht, weil char* bereits ein Zeiger ist. scanf braucht stets Zeiger.


ne ich habs so im struct drin:

char sZielbahnhof[256] ;

das ist kein Zeiger vom Typ Char, sondern ein String.
 
Schon - man kanns ja wohl string nennen, aber in Wirklichkeit ist es halt ein Pointer auf den ersten Buchstaben, die anderen folgen danch...so eine variable ist eigentlich nur ein int mit der adresse, wo im arbeitsspeicher der "string" beginnt

gruß

edit: Rechtschreibfehler
 
Zurück