Pointer verständniss problem...
-
Es geht um ein altes problem von mir...
Wenn ich nun folgendes kleines programm habe :
char p_eingabe;
while(scanf("%s", &p_eingabe)!=0)
{
printf("eingabe :%s Ende\n", &p_eingabe);
}
Wie schaffe ich es nun die Eingabe mit irgendwas zu vergleichen ??
logischerweise müßte es ja z.b.
if (*p_eingabe == "test") sein, da
*pointer gleich der inhalt an folgender Speicheradresse
,dummerweise spuckt mir mein Compiler aber immer nur
main.cpp:46: invalid type argument of `unary *'
aus ...
Danke im Vorraus
-
Der Titel trifft die Lage vollkommen. In den FAQs hats einen Text über Arrays und Pointer. Schau dir den mal an.
-
ScoTch schrieb:
char p_eingabe; // das ist ein einzelnes zeichen...
while(scanf("%s", &p_eingabe)!=0) // %s liest eine zeichenkette (in c: char*)
{
// %s gibt solange zeichen aus bis ein '\0' kommt...
printf("eingabe :%s Ende", &p_eingabe);
}Wie schaffe ich es nun die Eingabe mit irgendwas zu vergleichen ??
logischerweise müßte es ja z.b.
if (*p_eingabe == "test") sein, dane der *-operator dereferenziert einen pointer. da p_eingabe aber kein
pointer is gehts net.
dein programm muesste so aussehen:// eingabe ist jetzt ein feld von zeichen // in c/c++ wird ein feld wie ein pointer behandelt char p_eingabe[20]; while(scanf("%s", &p_eingabe)!=0) { printf("eingabe :%s Ende\n", &p_eingabe); } vergleichen mit strcmp (dazu musst du unter c++ die <cstring> unter c die <string.h> einbinden): if (std::strcmp( p_eingabe, "test" ) == 0)