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, da

    ne 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)
    

Anmelden zum Antworten