passowrt Beispiel KLAPTNET

Salvatore

Salvatore

Rap und Codes
Mein C Code

#include<stdio.h>

char passwort[]={"passwort"};
char name[]={"name"};

int check_pw(char pw[])
{
int i, n = sizeof(passwort)/sizeof(char);
for(i=0; i<n; i++)
if(pw != passwort)
return 0;
else
return 1;
}

char check_na(char na[])
{
int i, n = sizeof(name)/sizeof(char);
for(i=0; i<n; i++)
if(na != name)
return 0;
else
return 1;
}

int main(void)
{
char nametmp[20];
char passtmp[20];
do{
printf("Name:");
fgets(nametmp,20,stdin);
if(check_na(nametmp)==1)
printf("Benutzer existiert!\n");
else
printf("Benutzer existeirt nicht!\n");
}while(check_na(nametmp)!=1);

printf("Hallo %s",nametmp);

do{
printf("Dein Passwort bitte:");
fgets(passtmp,20,stdin);
if(check_pw(passtmp)==1)
printf("Passowrt richtig\n");
else
printf("Sorry %s das Passwort wahr falch\n",nametmp);
}while(check_pw(passtmp)!=1);

return 0;
}

Wo is den mein Fehler?
Wenn ich als Name Bsp. nnnname oder nname, enigebe ist das ergebnis richtiig

und beim Passwort das gleiche wenn man Bsp. pp, eingiebt.
Hilfe wär net schlecht, bin noch anfänger
 
Zuletzt bearbeitet:
hui

a) nutze doch bitte die Code-Tags
Code:
while(true)
  printf("wesentlich besser lesbar\n");

b) warum char als Rückgabewert? Nimm doch bool
Code:
bool check_pw(char pw[]) {
  int i = 0;  // Eine Deklaration pro Zeile. Gut für die Übersichtlichkeit.
  int n = sizeof(passwort)/sizeof(char);
  for(i=0; i<n; i++)
    if(pw[i] != passwort[i])
      return false;

  return true;
}

bool check_na(char na[]) {
  int i = 0;
  int n = sizeof(name)/sizeof(char);
  for(i=0; i<n; i++)
    if(na[i] != name[i])
      return false;

  return true;
}

c) ..und schließlich dein Fehler. Du überprüfst nur das erste Zeichen!
Code:
bool check_na(char na[]) {
  int i = 0;
  int n = sizeof(name)/sizeof(char);
  for(i=0; i<n; i++)
    if(na[i] != name[i])
      return false;
    else    // <-- klammer das mal korrekt - dann siehst du was du da geschrieben hast-
      return true;
}
Das hättest du auch kürzer haben können.

Code:
bool check_na(char na[]) {
  if(na[0] == name[0])
    return true;

  return false;
}
 
Hab das jetzt so da stehn.

#include<stdio.h>

char passwort1[]={"passwort"};

bool check_pw(char pw[])
{

if(pw[0]==passwort1[0])
return true;
return false;
}



int main(void)
{
char passtmp[20];

printf("Dein Passwort bitte:");
fgets(passtmp,20,stdin);
if(check_pw(passtmp)==true)
printf("Passowrt richtig\n");
else
printf("Sorry das Passwort wahr falch\n");
return 0;
}

Aber trozdem sagt er pw richtig wenn nur das 1st. zeichen stimmt, warum?
Bsp. pass, oder ppppp, aber nicht bei cpass, oder opo oder so
 
du prüfst nach wie vor nur das erste zeichen des passworts. deine erste version der function war schon fast richtig, du musst nur das return true aus der schleife herausnehmen
Code:
bool check_pw(char pw[])
{
  int i, n = sizeof(passwort)/sizeof(char);
  for(i=0; i<n; i++)
    if(pw[i] != passwort[i])
      return false;

  return true;
}
allerdings funktioniert das auch nur wenn die beiden zu vergleichenden wörter gleich lang sind, wenn pw kürzer oder länger als passwort ist gibts probleme. da musst du dir noch was überlegen

ps: code tags benutzen!
 
hehejo schrieb:
a) nutze doch bitte die Code-Tags
[/code]
Das hättest du auch kürzer haben können.

Code:
bool check_na(char na[]) {
  if(na[0] == name[0])
    return true;

  return false;
}
Das ist doch nicht der passende Code. Du solltest schon etwas verstehen was da steht.
 
zum vergleichen von strings, benutze strcmp() bzw. besser strncmp()

auf bald
oenone
 
Hab e bichen experimentiert und volgendes gecodet:

#include<stdio.h>
#include<string.h>

char passwort1[]={"passwort"};

int check_pw(char pw[])
{
int i;
i=strlen(passwort1);
if(strncmp(passwort1,pw,i) == passwort1)
return true;
return false;
}

int main(void)
{
char passtmp[20];
printf("Pw:");
fgets(passtmp,20,stdin);
if(check_pw(passtmp)==true)
printf("OK\n");
else printf("FALCH\n");

}

Und so scheint es zu klappen.

So und nun will ich ne Funk. schreiben die ' * ' beim tippen des passworts
auf dem bildschirm ausgiebt.

Hätest du en paa Anhaltspunkte??
 

Ähnliche Themen

C Code Hilfe!!! gesucht bei Dezimalzahl in Binärzahl for loop

Switche abfragen über Script

Unix Webserver mit HTML Seite erstellen

Verschlüsseltes Backup-Script mit rsync

script sshpass

Zurück
Oben