[C] 2 Fehler im Programm

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Mxoc
Beiträge: 4
Registriert: So Nov 03, 2013 4:53 pm

[C] 2 Fehler im Programm

Beitrag von Mxoc » So Nov 03, 2013 5:44 pm

Hi, ich versuchte ein kleines einfaches Programm zu schreiben, bei dem man dem Nutzer ein Passwort und eine Zeichenfolge eingeben lässt. Man wird danach aufgefordert das PW einzugeben, und wenn man es richtig wiedergibt sollte man die Zeichenfolge ausgeben bekommen. Wenn nicht, wird einfach nur das Alte PW mit dem Neuen PW ausgeben, damit man sieht was man falsch eingeben hatte.

Nun kurz vor Ende des Programmes als ich es mit Code::Blocks [12.11] testen wollte gab er mir gleich mal ein paar Fehler aus, von denen ich nun noch 2 übrig habe..

hier die Fehler :

Code: Alles auswählen

|27|error: expected expression before '%' token|
|38|error: expected ';' before '}' token|
Und hier das Programm.. Ich setz es mal komplett rein:

Code: Alles auswählen

#include <stdio.h>

int main()

{
    printf("Willkommen im Speicherprogramm.\n");
    getchar();
    printf("Ich bitte dich, dir ein Passwort auszudenken, dass nur aus Zahlen besteht.\n");
    getchar();
    printf("Hast du das Verstanden?\nJa[n] oder Nein [n].\n");
    char ver_;
    scanf("%c",&ver_);
    if (ver_== 'j')
    {
        printf("Nun gebe bitte ein Passwort ein.\n");
        int pw_;
        scanf("%i",&pw_);
        printf("Danke!\nNun bitte ich dich, einen beliebigen Zeichensatz einzugeben.\n");
        char speicher_;
        scanf("%c",&speicher_);
        int w;
        for (w=0;w<10;w++);
        char w_zwei = '.';
            printf("%c\n",w_zwei);
        printf("Nun gebe dein Passwort bitte wieder ein.\n");
        int passwort_neu;
        scanf("%c",%passwort_neu;

        if (pw_== passwort_neu)
        {
            printf("Deine Zeichenkette war %c\n",speicher_);
            printf("Cool was?!\n");
        }
        else
        {
            printf("Passwort war falsch.\n Dein Passwort war : %c und du hast %c eingeben",pw_,passwort_neu);
        }
    }
    else
    {
        /***Zurück zu Zeile 8***/
        printf("Mist.\n");
    }
system("PAUSE");
return 0;
}

Ich weiß gerade echt nicht mehr weiter. Lese aber nun überall quer und dachte euch zu Fragen sei auch keine schlechte Idee.
Philosophie ist ein Spiel mit Zielen, aber ohne Regeln. Mathematik ist ein Spiel mit Regeln, aber ohne Ziele.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C] 2 Fehler im Programm

Beitrag von cloidnerux » So Nov 03, 2013 6:10 pm

Hi und Willkommen im Forum :D
Dein Problem liegt in dieser Zeile:

Code: Alles auswählen

scanf("%c",%passwort_neu;
Ich hoffe du siehst selber, was da nicht stimmt.

Dein Compiler hilft dir aber auch bei der Fehlersuche:

Code: Alles auswählen

|27|error: expected expression before '%' token|
Die 27 ist die Zeilennummer wo er einen Fehler gefunden hat. Zudem sagt die Fehlermeldung aus, dass da bei irgendeinem "%" ein Fehler ist, da ihm ein Ausdruck fehlt.
Nicht verständlich, denn außerhalb von Strings ist das "%" der Modulo-Operator.

Mit freundlichen Grüßen

cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Mxoc
Beiträge: 4
Registriert: So Nov 03, 2013 4:53 pm

Re: [C] 2 Fehler im Programm

Beitrag von Mxoc » So Nov 03, 2013 6:29 pm

Ha okay! jetzt wo ich es einzeln sehe, sieht man es. In dem ganzen Gewusel hab ich den überblick wohl verloren. Danke!

Code: Alles auswählen

scanf("%i",&passwort_neu);
Philosophie ist ein Spiel mit Zielen, aber ohne Regeln. Mathematik ist ein Spiel mit Regeln, aber ohne Ziele.

Mxoc
Beiträge: 4
Registriert: So Nov 03, 2013 4:53 pm

Re: [C] 2 Fehler im Programm

Beitrag von Mxoc » So Nov 03, 2013 7:14 pm

Neues Problem, selbes Programm.


Es lässt sich ausführen und funktioniert super, bis dahin wo man die Zeichenkette eingeben soll.
Ich hab nun versucht den Fehler auszubauen indem ich den "for" teil rausgenommen habe.

Code: Alles auswählen

 int w;
        for (w=0;w<10;w++);
        char w_zwei = '.';
            printf("%c\n",w_zwei);
das fällt nun weg, da es sofort als Eingabe für die Zeichenkette gewertet wird.

Tja gut gedacht, aber nun geht es immer noch nicht, da

Code: Alles auswählen

scanf("%c",&speicher_);
"übersprungen" wird.
Die Ausgabe sieht dann folgendermaßen aus:
Danke!
Nun bitte ich dich, einen beliebigen Zeichensatz einzugeben.
Nun gebe dein Passwort bitte wieder ein.
Wenn ich nun das Passwort richtig eingebe, bekomme ich eine Leerzeile.

Wenn ich nach dem "übersprungenen" Teil ein

Code: Alles auswählen

getchar();
setze, wird der Teil mit der Passworteingabe "übersprungen". Und als falsch eingebendes Passwort ausgegeben.
Philosophie ist ein Spiel mit Zielen, aber ohne Regeln. Mathematik ist ein Spiel mit Regeln, aber ohne Ziele.

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: [C] 2 Fehler im Programm

Beitrag von FritziFoppel » So Nov 03, 2013 7:53 pm

Ich würde dir erstmal raten etwas mehr Ordnung in dein Programm zu bringen, das hilft ungemein (weiß ich aus eigener Erfahrung). Du kannst z.B. deine ganzen Variablen die du benötigst am Anfang des Programmes deklarieren. Außerdem rate ich dir, dein Programm an der Stelle zu untersuchen, wo der Fehler auftritt, d.h. du lässt den Code, den du nicht benötigst weg (markierst ihn als Kommentar /* */) und benutzt nur den Code der für dich wichtig ist.

Zu deinem Programm:
Dein Problem liegt an der Zeichenkette die du eingeben willst.

Code: Alles auswählen

        printf("Danke!\nNun bitte ich dich, einen beliebigen Zeichensatz einzugeben.\n");
        char speicher_;
        scanf("%c",&speicher_);
Du forderst einen Buchstaben, willst aber wahrscheinlich eine Zeichenkette eingeben, deshalb lieber verwenden.

Wenn du also eine Zeichenkette einforderst, musst du die Variable noch verändern:

Code: Alles auswählen

char buchstabe; // falsch
char * zeichenkette; // oder
char zeichenkette [10] // für 10 Buchstaben
Dann musst du noch die Ausgabe der Zeichenkette verändern:

Code: Alles auswählen

printf("Deine Zeichenkette war %c\n",speicher_); // wie gesagt "%s" für Zeichenkette
Und wenn du dich für den ersten Vorschlag mit char * zeichenkette entscheidest, musst du der Ausgabe noch ein Adressoperator vorgeben.

Code: Alles auswählen

printf("Zeichenkette war: "%s", &zeichenkette);

Mxoc
Beiträge: 4
Registriert: So Nov 03, 2013 4:53 pm

Re: [C] 2 Fehler im Programm

Beitrag von Mxoc » So Nov 03, 2013 8:12 pm

Ah danke! Okay. Also C nehme ich nur bei einem Zeichen? - Wie oben bei j / n Eingabe. Und s bei längeren. Strings .. s ... gibt sinn! danke!
Philosophie ist ein Spiel mit Zielen, aber ohne Regeln. Mathematik ist ein Spiel mit Regeln, aber ohne Ziele.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [C] 2 Fehler im Programm

Beitrag von Xin » So Nov 03, 2013 9:03 pm

Schau mal hier:
printf: Format-String
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C] 2 Fehler im Programm

Beitrag von cloidnerux » So Nov 03, 2013 9:41 pm

Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten