Forum: Compiler & IDEs String als Password Wandlung


von Oli (Gast)


Lesenswert?

Hallo zusammen,

ich versuche eine Konstante zu einem String zu wandeln um diese dann als 
Passwort zu nutzen.

derzeit sieht es so aus:
Konstante:
1
#define MY_DEFAULT_MAC_BYTE1            (0x40)
2
3
4
5
char* login[6]; 
6
itoa( MY_DEFAULT_MAC_BYTE1, login);
Der Inhalt von "login" müsste eigentlich "64" sein als String. Wenn ich 
"login" ausgebe wird auch eine "64" ausgegeben. Jedoch wenn ich diese 64 
als Vergleichsvariable für mein Passwort verwende funktioniert es nicht 
wenn ich bei der abfrage 64 eingebe. Habe schon 64\0 probiert aber das 
ist es auch nicht.


Ich habe testweise mal einfach einen beliebigen text in "login" 
geschrieben und diesen für die Passwortabfrage genutzt das funktioniert 
einwandfrei.
Ich habe irgendwo einen denkfehler? Hat von euch jemand ne idee?

: Verschoben durch User
von Kaj (Gast)


Lesenswert?

Oli schrieb:
> itoa( MY_DEFAULT_MAC_BYTE1, login);
Du solltest auch eine Umwandlungsbasis angeben, in etwa so:
1
itoa( MY_DEFAULT_MAC_BYTE1, login, 16); //Hex. umwandlung
2
itoa( MY_DEFAULT_MAC_BYTE1, login, 10); //Dez. umwandlung
3
itoa( MY_DEFAULT_MAC_BYTE1, login, 8); //Okt. umwandlung
4
itoa( MY_DEFAULT_MAC_BYTE1, login, 2); //Bin. umwandlung

Gruesse

von Oli (Gast)


Lesenswert?

Danke für deine Antwort Kaj,

leider geht das nicht. Ich bekomme folgende Fehlermeldung:


Error [1204] too many arguments in function call

von Karl H. (kbuchegg)


Lesenswert?

Oli schrieb:

> char* login[6];
> itoa( MY_DEFAULT_MAC_BYTE1, login);

Bitte kauf dir ein C-Buch und arbeite es durch.
String-Verarbeitung in C ist zwar nicht wahnsinnig schwer, aber es ist 
doch erfahrungsgemäss die erste Hürde.
Und sie funktioniert nicht so, wie du dir das vorstellt. Es reicht 
nicht, da mit Halbwissen ranzugehen, wie Strings, Arrays und Pointer 
funktionieren.

Du hast da in erster Linie überhaupt nichts brauchbares für Strings. Du 
hast ein Array von 6 Pointer geschaffen. Keiner dieser Pointer zeigt auf 
irgendeinen Speicher, der für Stringverarbeitung brauchbar wäre.

Wenn schon, dann
1
char login[6];

aber ob ein Array der Größe 6 ausreichend ist, kann ich nicht sagen. Da 
passen nur 5 Zeichen, in Kombination mit dem für Strings obligatorischen 
abschliessendem \0-Zeichen rein.

: Bearbeitet durch User
von Rolf Magnus (Gast)


Lesenswert?

Nun, um "64" zu speichern, reicht es. Was ich mich frage, ist, warum die 
Konstante überhaupt als Zahl gespeichert ist und nicht gleich als 
String, wenn sie eh in dieser Form gebraucht wird.

von Oli (Gast)


Lesenswert?

Sie wird ja als Zahl UND als String benöigt.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Oli schrieb:
> Jedoch wenn ich diese 64
> als Vergleichsvariable

Du kannst nicht einfach "die Variable" vergleichen: 
http://www.c-howto.de/tutorial-strings-zeichenketten-stringfunktionen-vergleichen-strcmp.html

von Yalu X. (yalu) (Moderator)


Lesenswert?

Aktiviere undbedingt auch die Option -Wall des GCC, um Warnungen bei
verdächtigen Code-Konstrukten anzeigen zu lassen. Damit werden die
beiden schon genannten groben Fehler (falscher Datentyp von login und
fehlendes Argument bei itoa) in deinem Code aufgedeckt.

Oli schrieb:
> Jedoch wenn ich diese 64 als Vergleichsvariable für mein Passwort
> verwende funktioniert es nicht wenn ich bei der abfrage 64 eingebe.

Wie machst du den Vergleich?

Wie fragst du das Passwort ab?

Beides könnte ebenfalls fehlerhaft sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.