String umwandeln

hg197

Grünschnabel
Hallo,

ich bin zur Zeit dabei mir ein Tool zu basteln, das eine einfach Art von Verschlüsselung beinhalten soll. Mein Problem ist hierbei, dass ich eine Zeichenkette mit Buchstaben in eine mit Zahlen umwandeln möchte, und diese später wiederum in Buchstaben. Ist dies realisierbar, oder falls nicht, ist es möglich Buchstaben in einer Zeichenkette zu tauschen? Vielleicht a in x , b in g, etc und das dann evtl wieder umwandeln. Ich bin kein Informatiker, daher meine nicht ganz so exakten Kentnisse. Vielen Dank für die Hilfe :)

Wichtig: Ich schreibe den Code für das Tool in C.
 
Du könntest das über die Ascii Zeichen Tabell machen, jeden Buchstaben in über Type-Cast in eine Integer variable casten und dann den Ascii code um eine bestimmte anzahl verschieben und anschließend wirde zurück casten. Musst nur darauf achten das es nur 256 Zeichen geben kann!
 
Das hört sich gut an...wie genau macht man dieses Type-cast?
Das Ganze soll nach direkter Tastatureingabe umgewandelt werden, bevor es in eine Datei geschrieben wird.
 
Könnte so gehen!

Code:
#include <stdio.h>
#include <string.h>
int main (void){
int index, integer[81];
char string[81];

printf("Bitte String eingeben: ");
gets(string);

for (index=0; index < strlen(string); index++){
integer[index] = (int) string[index];
printf("Buchstabe: %c\n", string[index]);
printf("Ascii: %d\n\n", integer[index]);
}
gets(string);
return 0;
}
 
Interessant...kann ich diesen Array dann einfach in eine Datei schreiben und später wieder auslesen? Bzw. kann ich diesen Array auch als Hex oder Oktale Zahl schreiben?
Hoffentlich bin ich nicht zu anspruchsvoll :)
 
so kannst du dir das in Hex und Okt ausgeben lassen,
C++:
#include <stdio.h>
#include <string.h>
int main (void){
int index, integer[81];
char string[81];

printf("Bitte String eingeben: ");
gets(string);

for (index=0; index < strlen(string); index++){
integer[index] = (int) string[index];
printf("Buchstabe: %c\n", string[index]);
printf("Ascii: %d\n", integer[index]);
printf("In Hex: %0x\n", integer[index]);
printf("In Oktal: %o\n\n", integer[index]); //kleines 'O'
}
gets(string);
return 0;
}

jetzt muss du nur noch eine Datei öffnen und dann mit mit fprintf in die Datei schreiben und anschließend alles mit fgets auslesen!

XeoX
 
Das is wahnsinn! Danke für die schnelle Hilfe :-D . Muss mich heute leider mit was anderem befassen, aber morgen wirds prompt in die Tat umgesetzt.

Ich hatte übrigens ein Problem mit der Schleife:
C++:
do{
                            gets(lager);               
                            fprintf(Speicher,"%s",lager);
                            if(strcmp(lager,ENTER)== strcmp(ENTER,ENTER)){break;};             
                            }while(lager!=ENTER);
mit: char lager[400]; und char ENTER="#";
und Speicher als Zieldatei.

Das Problem ist, dass die Schleife ohne den strcmp-Vergleich kein Ende findet. Den musste ich behelfsmäßig nachträglich einbauen. Die -while Bedingung greift irgendwie nicht, wenn ich # eingebe.

EDIT: Wie bekomme ich diese cpp-code Umgebung? Das sieht irgendwie bei weitem übersichtlicher aus.
 
Zuletzt bearbeitet:
Versuch es mal so:
C++:
do{
gets(lager);
fprintf(Speicher,"%s",lager);
}while(strcmp(lager, ENTER));

//oder

do{
gets(lager);
fprintf(Speicher,"%s",lager);
}while(lager[0] != ENTER);

Wenn du etwas mit gets einliest wir immer ein "\0" angehängt, das ist das Zeilenwechsel Zeichen. Aufgrud dessen kann ein vergleich nicht funktionieren!

Die Erste möglichkeit ist dabei die schönere!

Und für solche vergleiche mit festen Zeichen, solltest du den Präprozessorbefehl
"#define" nutzen!

Break Anweisungen, sind kein schöner Code, ist kein Standard!
Den CODE bekommst du so:
[ kürzel ] code [/ kürzel] und das Kürzel ist cpp!

XeoX
 
Zuletzt bearbeitet:
Aso, danke dir ;-). Die while Bedingung mit lager[0] hatter ich auch schon durchprobiert, aber das ging auch nicht. Mal sehen, ob es mit dem anderen Vergleich geht. Erfolgsbericht folgt...
 
Super, die Schleife hat funktioniert. Beim Auslesen habe ich noch ein Problem. Wie lese ich die komplette Datei bis zum ende aus? Ich dachte an etwas wie:

C++:
int i=0;
                            do{
                            if(strcmp(lager, ENTER)){i++;};
                            fscanf(Speicher,"%s",&lager);
                            printf("%d. %s",i,lager);
                            
                            }while(fscanf(Speicher,"%s",&lager) == EOF);

Aber es geht nicht...
 
Zuletzt bearbeitet:
Zurück