Immer wieder memset() vor Funktionsaufruf
-
Abend,
habe ne Funktion geschrieben in der ein String verschlüsselt wird.int decrypt(char *str,char *crypt)
Als erstes Argmument wird ein String übergeben der verschlüsselt werden soll, als 2 Argument wird ein buffer erwartet wo der verschlüsselte String reingeschrieben wird.
Wenn ich aber aber vor einen Aufruf den buffer nicht mit memset überschreibe dann habe ich manchmal in der Ausgabe meinen verschlüsselten Text + komische Zeichen.
Jetzt wollte ich wissen ob es noch eine andere möglichkeit gibt ausser memset jedesmal aufzurufen?
-
Mit ziemlicher Sicherheit verkackst du die Nullterminierung des verschlüsselten Strings.
-
vielleicht liegt es einfach daran, dass du die enkryptete Zeichenkette nicht mit '\0' abschließt.
-
Ah ok.
also so:for(x=0; x<len; x++) { c = crypt[x]; c = c - ROT; crypt[x] = (char)c; } crypt[x] = '\0';
-
Wenn len mit strlen() geholt wurde sollte es funktionieren.
-
Warum nicht einfach so?
for(x=0; x<len; x++) { crypt[x] -= ROW; } crypt[x] = '\0';
-
Ich rieche ein unnötiges strlen.
-
Tim schrieb:
Ich rieche ein unnötiges strlen.
Stimmt!
while(crypt[x]) { crypt[x++] -= ROW; } crypt[x] = '\0';