Ich versuche ein Programm zu erstellen, das eine Reihe von Buchstaben aus einer Datei entschlüsselt. Leider kann ich die Buchstaben nicht in ein Char-Array (String) lesen, weil ich nicht weiß, wie die fgets() -Funktion funktioniert. So sieht meine eigentliche Code wie folgt aus:Eine Zeichenkette mit fgets aus einem Filestream in ein char-Array lesen. [C]
#define stringlength 80
int main(void)
{
FILE *source;
char puffer[stringlength], name[20];
printf("Which file do you want to read: ");
scanf("%s",name);
if((source=fopen(name,"r")) == NULL)
{
fprintf(stderr, "Can not open %s\n", name);
return EXIT_FAILURE;
}
while(fgets(puffer, stringlength, source))
{
fputs(puffer, stdout);
}
return EXIT_SUCCESS;
}
Also eigentlich das irgendwie funktioniert. Es öffnet die Eingabeaufforderung und schreibt die Buchstabenfolge in dieses Fenster. Aber jetzt muss ich jeden einzelnen Buchstaben benutzen und ihn mit den Buchstaben des Schlüssels vergleichen. Es vergleicht nur die rechten vier Bits mit einem XOR, um den Ergebnisbuchstaben in der gleichen Spalte des ASCII-Diagramms zu halten. Ich habe bereits einen Algorithmus geschrieben, die für einzelne Buchstaben funktioniert:
saveLeftFourBits = letterOfFile >> 4;
saveLeftFourBits = saveLeftFourBits << 4;
letterOfFile = letterOfFile & 0x0F;
letterOfKey = letterOfKey & 0x0F;
temp = letterOfFile^letterOfKey;
temp |= saveLeftFourBits;
Temp die resultierende Brief sein sollte. So jetzt kämpfe ich mit, wie man einen einzelnen Buchstaben von der fgets Funktion in eine Variable (in letterOfFile) liest und es mit dem letterOfKey vergleicht. Oder gibt es vielleicht eine String-Funktion, die das viel einfacher macht? Ich hoffe, dass mir jemand helfen kann. :)
Wow, danke. Funktioniert perfekt. – Nord