text umwandeln
-
hi.
also ich hab folgendes vor, weiss allerdings noch nicht genau wie ich das anstellen soll:- text eingeben (deutsch)
- programm soll jeden buchstaben durchsuchen und diesen dann ersetzen durch andere zeichen
- ausgeben.beispiel:
ich gebe "test" ein.
dann soll er das so umwandeln: 733$7weiss net genau wie und wo ich die zeichen speichern soll, damit er weiss, aha das A ist eine 4, jetzt umwandeln...
danke für eure hilfe.
cya
-
ich bin mir nicht sicher aber vllt könntest du es mit if funktionen machen
also ungefär so
if (text==a) printf("1\n");
hm dass wäre dann aber nur so wenn ein der text nur ein buchstabe enthielte.
-
Höhöhö 1337-Generator?!?
for(int s = 0;s < strlen(Text);++s){ if(Text[s] == 'a') Text[s] = '4'; else if(Text[s] == 'e') Text[s] = '3'; else if(Text[s] == 'l') Text[s] = '1'; else if(Text[s] == 't') Text[s] = '7'; //... }
Großbuchstaben nicht vergessen
-
wenn man das gleiche jetzt auch noch umgekehrt macht, hat man auch gleich einen entschlüssler.
-
Warum so schwer?
Warum addierst du nicht einfach auf den ASCII-Wert der einzelnen Buchstaben eine Zahl? So bekommst du auch Salat. Du solltest nur aufpassen, dass das Ergebnis nicht größer als 255 ist. Du kannst ja nicht alle Buchstaben mit den Zahlen von 0-9 codieren.
Man könnte ja sogar noch den Wert, der drauf addiert wird variieren lassen, so ist die Entschlüsselung nicht ganz so einfach.
-
Äheem... das sollte man jetzt natürlich den Thread-Starter fragen, aber ich glaube er will nicht irgendeine Verschlüsselung.
3rr0r, bist du auf 1337 aus, so antworte mit "Ja"!
-
huhu.
also jo, das mit else und so hab ich mir auch schon gedacht, nur..: stellt euch vor ich geb einen satz ein wie:" hallo, ich bin mr. test"..dann sollte er diesen ja auch übersetzten und er muss denn string ja durchsuchen und die buchstaben ersetzen, nur wie durchsuche ich und gucke nach nach welche buchstaben ich halt ersetzten muss? ich manchmal sind ja die buchstaben 2zeichen in leet. und das haut ja net in wenn ich das in ein array pack.
hmm...
ciao
-
du must ja auch nur wie nirsaja es gesagt hat eine for schleife einbauen wo bei jeder runde der pointer um eine stelle verschoben wird.somit überprüfst du ja alles.
-
3rr0r schrieb:
huhu.
also jo, das mit else und so hab ich mir auch schon gedacht, nur..: stellt euch vor ich geb einen satz ein wie:" hallo, ich bin mr. test"..dann sollte er diesen ja auch übersetzten und er muss denn string ja durchsuchen und die buchstaben ersetzen, nur wie durchsuche ich und gucke nach nach welche buchstaben ich halt ersetzten muss? ich manchmal sind ja die buchstaben 2zeichen in leet. und das haut ja net in wenn ich das in ein array pack.
hmm...
ciaoWo ist das Problem?
Schritt1: Du gehst einmal über den zu ersetzenden Sring und ermittelst die Anzahl an Zeichen, die der leet-String haben wird. Schritt2: Du allokierst Speicher für den leet-String. Die Menge an benötigten Speicher wurde in Schritt1 ermittelt. Schritt3: Du iterierst über den zu ersetzenden String mit folgendem Algorithmus: Wenn aktuelles Zeichen im string ein Zeichen ist, dass ersetzt werden muss (z.B. 'e' oder 'M'), dann : - die erforderlichen Zeichen in den leet-string kopieren (im Fall von 'M' z.B. die 4 Zeichen '|\/|') - sonst: Zeichen 1:1 in den leet-string kopieren
-
C-Progger schrieb:
du must ja auch nur wie nirsaja es gesagt hat eine for schleife einbauen wo bei jeder runde der pointer um eine stelle verschoben wird.somit überprüfst du ja alles.
Falsch. Der leet-string kann länger sein als der ursprüngliche String.
-
hallo.
habe das grade auch probiert und habe es so gemacht, ging aber nicht.
#include <stdlib.h> #include <stdio.h> int main() { char leet[100] = {'A','a','B','b','C','c'}; char Text[100]; scanf("%s",&Text[100]); printf("\n"); int x; for(x=0;x==10;++x) { if(Text[100] == leet[100]) { printf("%s\n",Text[100]); } } }
habs auch schon mit while probiert..da gings..aber naja, mehr oder weniger...ich könnt zwar 100te ifs machen, aber es muss ja auch so mit nem array gehen, muss ja nur ein array mit dem anderen vergleichen, ne?
cu
-
Ob mein Beitrag vielleicht unsichtbar ist?
-
[quote="interpreter"]
Schritt1:
Du gehst einmal über den zu ersetzenden Sring und ermittelst die Anzahl an Zeichen, die der leet-String haben wird.
[/code]
also so:char text[500]; scanf("%s",&text[500]);
wie ermittel ich da jetzt die anzahl wieviele zeichen er schon hat?
[quote="interpreter"]
Schritt2:
Du allokierst Speicher für den leet-String. Die Menge an benötigten Speicher wurde in Schritt1 ermittelt.
[/code]
ja, ich muss nen speicher zur verfügung stellen.
also nen array stellen...[quote="interpreter"]
Schritt3:
Du iterierst über den zu ersetzenden String mit folgendem Algorithmus:
Wenn aktuelles Zeichen im string ein Zeichen ist, dass ersetzt werden muss (z.B. 'e' oder 'M'), dann :
- die erforderlichen Zeichen in den leet-string kopieren (im Fall von 'M' z.B. die 4 Zeichen '|\/|')
- sonst: Zeichen 1:1 in den leet-string kopieren
[/code]
jo..
-
Hier eine kleine unvollständige Testimplementierung:
#include <stdio.h> #include <malloc.h> #include <string.h> #define SIZE 1000 int calcLeetSize(const char* str); void text2leet(char* leet, const char* text); int main () { char str[SIZE]; printf("String eingeben: "); fgets(str, SIZE, stdin); // Schritt 2: char *leet = (char*)calloc(calcLeetSize(str)+1,1); text2leet(leet, str); printf("Leet: %s\n", leet); int i; scanf("%i", &i); return 0; } // Implementierung von Schritt1 int calcLeetSize(const char* str) { int n; for(n=0; *str; str++) { switch(*str) { case 'M': n+=4; // M wird zu |\/| break; case 'N': n+=3; // N wird zu |\| break; case 'R': n+=2; // R wird zu |2 break; // usw. default: n+=1; } } return n; } // Schritt 3: void text2leet(char* leet, const char* text) { int i, j; for(i=j=0; i < strlen(text); i++) { switch(text[i]) { case 'M': leet[j++]= '|'; leet[j++] = '\\'; leet[j++] = '/'; leet[j++] = '|'; break; case 'N': leet[j++]= '|'; leet[j++] = '\\'; leet[j++] = '|'; break; case 'e': leet[j++]= '3'; break; default: leet[j++] = text[i]; } } }