Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fgets

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.11.2009, 21:00 Uhr
minus



nabend,

Problem ist, das C Programm erkennt nicht das Richtige Passwort.


C++:
/* bspl0040.c */
#include <stdio.h>
#include <string.h>

main() {
    char geheim[10],passwort[80];
    int versuch=3;
    geheim[3]='p';
    geheim[2]=109;
    geheim[7]=114;
    geheim[5]=116;
    geheim[0]=67;
    geheim[9]='x';
    geheim[1]=111;
    geheim[8]='\0';
    geheim[4]=geheim[1]+6;
    geheim[6]=101;
    printf("\nSie haben 3 Versuche.\n");
    do {
        printf("\nBitte Passwort eingeben.\n>");
        fgets(passwort,80,stdin);
        if(strcmp(geheim,passwort) == 0) {
            printf("\nPasswort ok!\n");
            break;
        }
        else
            printf("\nFehlerhaftes Passwort! \n\a");
        versuch--;
    } while(versuch > 0);
}



musste die Zeile


C++:
fgets(passwort,80,stdin);


abändern, hieß vorher


C++:
gets(passwort);
.

aber der Compiler meldet sich bei gets wegen Buffer overflow, Vermute das der Fehler bei fgets liegt oder ?

mfg minus

btw.: nutze das Passwort " Computer" .

Dieser Post wurde am 23.11.2009 um 21:01 Uhr von minus editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2009, 21:45 Uhr
0xdeadbeef
Gott
(Operator)


fgets belässt das Newline-Zeichen am Ende des eingelesenen Strings.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.11.2009, 05:22 Uhr
minus




Zitat von 0xdeadbeef:
fgets belässt das Newline-Zeichen am Ende des eingelesenen Strings.


das heißt dann, dass es so nicht geht, gibt es da eine andere Möglichkeit für mich, damit das Programm läuft?

mfg minus

Dieser Post wurde am 24.11.2009 um 05:22 Uhr von minus editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.11.2009, 08:55 Uhr
ao

(Operator)


Das heißt, das in geheim[] gespeicherte Passwort ist "Computer", und das eingetippte ist "Computer\n". Das ist für den Vergleich nicht dasselbe, du müsstest es erst zurechtschneiden.

Nochn Tipp: Unterbrich die Arbeit an dem Programm und lerne JETZT, mit dem Debugger umzugehen. Ich kann absolut nicht verstehen, warum Debugging in vielen Anleitungen so vernachlässigt wird.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.11.2009, 19:49 Uhr
minus




Zitat von ao:

Nochn Tipp: Unterbrich die Arbeit an dem Programm und lerne JETZT, mit dem Debugger umzugehen. Ich kann absolut nicht verstehen, warum Debugging in vielen Anleitungen so vernachlässigt wird.


Habe mich immer davor gedrückt, aber habe ihn mir jetzt mal genauer angeschaut und bin begeistert.
Man kann ja richtig zuschauen was das Programm macht und wo es sich gerade befindet

habe mir dann mal die Variable Passwort, mit gets und mit fgets angeschaut und ja gets speichert Computer und fgets Computer/n.

besten dank euch beiden

minus

Dieser Post wurde am 24.11.2009 um 19:50 Uhr von minus editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: