Forum: Compiler & IDEs String als Password Wandlung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Oli (Gast)


Bewertung
0 lesenswert
nicht 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 Moderator
von Kaj (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator)


Bewertung
0 lesenswert
nicht 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 Moderator
von Rolf Magnus (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Sie wird ja als Zahl UND als String benöigt.

von Läubi .. (laeubi) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.