2016-11-02 1 views
0

Für unsere Aufgabe in der Schule müssen wir 2,3 Millionen Passwörter in einem dynamischen Zeichen speichern. Ich muss das Passwort des Benutzers gegen alle diese Kennwörter überprüfen, um sicherzustellen, dass es nicht auf der Liste ist.Kann man Char * mit einer String-Variablen vergleichen?

Wenn das Passwort des Benutzers auf der Liste steht, verlieren sie einen Punkt aufgrund der Stärke ihres Passworts.

Ich habe dies versucht:

int i = 1, maxSize = 2300000, passwordList = 1; 

char* passCommon = NULL; 
passCommon = new char[mazSize]; 

string password = "JohnDoe";  // Use this for example. 

for (i=0; i > maxSize; i++) 
{ 
    if(password == passCommon[i]) 
    { 
    passwordList = 0; 
    break; 
    } 
} 

Was mache ich falsch?

+0

Verwenden Sie strcmp zum Vergleichen von 'char *' andernfalls überprüfen Sie die Zeiger für die Gleichheit nicht die Strings gespeichert an diesen Adressen – shuttle87

+3

Verwenden Sie einfach eine 'std :: unordered_set ' für den Satz von gemeinsamen Passwörtern. –

+0

Ohne Bezug, diese Schleife wird nie funktionieren. Der Komparator ist rückwärts. – WhozCraig

Antwort

0

Zuerst Sie dynamisch einen altmodischen Zeichenfolge erstellen:

passCommon = new char[mazSize]; 

Eine Saite, nicht viele. Wenn Sie ein Array von Null-Strings erstellen möchten, sollten Sie verwenden:

char **passCommon = nullptr; 

Beachten Sie zwei Sternchen, nicht nur eins. Sternchen sollten in der Nähe von identifircator sein. Dann sollten Sie dynamisch ein Array von char * (Zeiger auf Char-Arrays) erstellen. Dann sollten Sie dieses Array durchlaufen und bei jeder Iteration dynamisch ein Array von Zeichen erstellen, das dem Zeiger zugewiesen ist.

0

Es tut mir leid, dass mein Englisch schlecht ist, aber ich hoffe, ich kann etwas Nützliches für Sie tun. Ich denke, Sie können 2,3 Millionen Passwörter in Container mit Zeichenfolge (wie Vektor) speichern, und Sie können sie vergleichen wie: password == passCommon[i]

Verwandte Themen