PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String Crypter anfänger...



FuX.
21.01.2008, 00:40
das sollte eig. ein string crypter werden
kann mir einer sagen wo der fehler ist?

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{

char eingabe[5],Buffer[5] ;
Buffer ="";
cin >> eingabe ;
for (int i=0;i < 5 ; i++)
{
if (eingabe[i]=='a')strcat(Buffer,"m");
if (eingabe[i]=='b')strcat(Buffer,"n");
if (eingabe[i]=='c')strcat(Buffer,"o");
if (eingabe[i]=='d')strcat(Buffer,"p");
if (eingabe[i]=='e')strcat(Buffer,"q");
if (eingabe[i]=='f')strcat(Buffer,"r");
if (eingabe[i]=='g')strcat(Buffer,"s");
if (eingabe[i]=='h')strcat(Buffer,"t");
if (eingabe[i]=='i')strcat(Buffer,"u");
if (eingabe[i]=='j')strcat(Buffer,"v");
if (eingabe[i]=='k')strcat(Buffer,"w");
if (eingabe[i]=='l')strcat(Buffer,"x");
if (eingabe[i]=='m')strcat(Buffer,"y");
if (eingabe[i]=='n')strcat(Buffer,"z");
if (eingabe[i]=='o')strcat(Buffer,"a");
if (eingabe[i]=='p')strcat(Buffer,"b");
if (eingabe[i]=='q')strcat(Buffer,"c");
if (eingabe[i]=='r')strcat(Buffer,"d");
if (eingabe[i]=='s')strcat(Buffer,"e");
if (eingabe[i]=='t')strcat(Buffer,"f");
if (eingabe[i]=='u')strcat(Buffer,"g");
if (eingabe[i]=='v')strcat(Buffer,"h");
if (eingabe[i]=='w')strcat(Buffer,"i");
if (eingabe[i]=='x')strcat(Buffer,"j");
if (eingabe[i]=='y')strcat(Buffer,"k");
if (eingabe[i]=='z')strcat(Buffer,"l");

}
cout << Buffer << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

danke jetzt schonmal
mfg FuX.

H4x0r007
21.01.2008, 00:49
Welche Art von Fehler meinst du? Bekommst du Fehler beim
a) Compilen
b) Linken
c) Benutzen

Un es einfacher zu machen, würde ich dir vorschlagen, die <string> Lib einzubauen und char durch String zu ersetzen, da Char nur einen Buchstaben aufnehmen kann (Arrays sind dabei relativ umständlich). Des wetieren würde ich dir empfehlen, cin >> eingabe durch getline(cin, eingabe); zu ersetzen, da bei cin der String aufhört, sobald man ein Leerzeichen eingegeben hat.

Bsp:


Eingabe:
hallo du
Variableninhalt:
hallo

FuX.
21.01.2008, 00:52
wie? also anstat char einfach string ?
ist getline das gleiche wie cin ? und warum nicht cin?
sry bin noch am lernen^^

H4x0r007
21.01.2008, 01:24
Ich lerne auch noch.
Zur verdeutlichung:

cin liest die Eingabe bis zu einem Leerzeichen aus. Wenn du jetzt also schreibst "Ich bin FuX", wird in deiner String-Variable "Ich" stehen, weil cin nur bis zum Leerzeichen liest. Getline liest dagegen die ganze Zeile

Char kann nur einen Buchstaben aufnehmen. String kann 256 Zeichenwerte glaube ich...



#include <string>
using namespace std;
...
string stringvariable;
stringvariable = "Hallo, FuX";
...

cdr81
21.01.2008, 14:00
Kannst dann ja noch


std::ofstream outfile;
outfile.open("DeinText.txt");
outfile << buffer
outfile.close()


machen, damit dein text verschlüsselt in ne txt kommt.

und statt


char eingabe[5],Buffer[5] ;


machste eingabe und Buffer wie schon gesagt zu einem String ;)
und nimmst halt stat cin >> getline. damits dann so aussieht:


string eingabe, Buffer;

Buffer = "";
getline(cin, eingabe);


dann taucht halt nur noch ein problem auf, deine for-"schelife"^^


for (int i=0;i < 5 ; i++)


da du nun ja nicht sagen kannst wie lang der string ist, kannst du da ja also keine "feste" zahl eintragen. daher nimmst du dann einfach den befehlt .length() der die stringlänge angibt. also:


for (int i = 0; i < eingabe.length(); i++)

und schon ist das "problem" auch gelöst ;).

was mir grade noch aufgefallen ist, du könntest


if (eingabe[i]==' ')Buffer+=" ";

ja noch einfügen^^
hoffe ich konnte dir noch bissle helfen!