Warum kostenlos registrieren?

Nur als registriertes Mitglied hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du eigene Fragen stellen und hast die volle Übersicht über neue interessante Themen im Forum.
Jetzt kostenlos registrieren.

Login


Passwortprogrammierproblem

Fragen oder Probleme mit HTML, PHP oder CSS?

Passwortprogrammierproblem

Beitragvon dreamweaver2004 am 02.06.2005, 21:38

Hallo,

ich muss ein Passwortprogramm schreiben.

So weit bin ich:


Code: Alles auswählen
#include <stdio.h>
int checkPassword (char acEnteredPassw[], char acRealPassw[]);
int main ()

{
    const int iLENGTH = 3;
    char acEnteredPassw[iLENGTH];
    char acRealPassw[]= {'1', '2', '3'};
    int iDone = 1;
   

    printf ("Enter the password: ");
    gets (acEnteredPassw);
    printf ("Your entry: %s\n", acEnteredPassw);
       
    checkPassword (acEnteredPassw, acRealPassw);
   
    if (iDone)
    {
    printf ("Your entry is right!");
    }
    else
    {
        printf ("You have entered a wrong password");
    }   
   
    system ("pause");
    return 0;
}   

int checkPassword (char acEnteredPassw[], char acRealPassw[])
{
    int iDone = 1;
   
    if (acEnteredPassw = acRealPassw)
    {
        return iDone;
    }
    else
    {
        return 0;
    }
}           
   






Die Überprüfung: if (acEnteredPassw = acRealPassw) funktioniert nicht.
Warum nicht?, könnt ihr mir helfen?

Es handelt sich um die Sprache C.
dreamweaver2004
 
Beiträge: 100
Registriert: 24.09.2004, 20:53


Beitragvon miezmutz am 03.06.2005, 00:55

ich schieb dich mal in ein Unterforum, was glaube ich noch besser ist...
miezmutz
Moderator
 
Beiträge: 2411
Registriert: 19.07.2004, 13:04
Wohnort: Rendsburg

Beitragvon CoolCasimir am 03.06.2005, 00:58

Wenn Du aus checkPassword mit Return einen Wert zurück gibst, musst Du diesen auch zuweisen.
also sowas in der Art:
Code: Alles auswählen
zurueckwert = checkPassword (acEnteredPassw, acRealPassw);

Ausserdem muss man doch bei If Abfragen ein doppeltes == machen damit man den Wert nicht zuweist,
sondern nur vergleicht.. Bin mir nicht sicher ob das bei C auch so ist.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon Nezach am 03.06.2005, 01:02

Hallo,

ich kenne mich mit C zwar nicht aus, kann mir aber zwei mögliche Fehlerquellen vorstellen:

1. == statt =
Kann es sein, dass in C == zum Vergleichen und = zum Zuweisen genutzt wird? Dann würde dein = eine Zuweisung sein und im Erfolgsfall meistens true zurückgeben.

2. Vergleich zweier Arrays
acEnteredPassw stellt einen Zeiger auf ein Array dar. acRealPassw ebenfalls. Wenn du diese miteinander vergleichst, dann wird nicht überprüft, ob der Inhalt der Arrays gleich ist sondern nur, ob das Ziel der Zeiger gleich ist.
Beispiel:
char a[] = {'1','2','3'}; // Array wird erstellt und Zeiger darauf gesetzt
char b[] = {'1','2','3'}; // NEUES Array wird erstellt und Zeiger darauf gesetzt
char c = a; // Zeiger wird auf das Array a[] gesetzt

a=b -> false // obwohl Inhalt gleich
a=c -> true // da Zeiger gleiches Ziel haben

Aber wie gesagt, ich habe keine wirkliche Ahnung von C, hoffe aber, trotzdem geholfen zu haben.

Gruß,
Nezach
Nezach
 
Beiträge: 16
Registriert: 17.05.2005, 10:14


Zurück zu HTML, PHP & Co.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste