Verschlüsselung, kleines Problem

Radhad

Erfahrenes Mitglied
Hallo zusammen!

Ich habe eine Verschlüsselung geschrieben, habe aber das Problem, dass der nicht ein \n erkennt und in der nächsten Zeile weitermacht. Leider weiß ich nicht wie ich es ändern kann.

Hier der Code:
Code:
int offset=1000; //Funktionsdeklaration zur Decodierung
	FILE *fpCodiert, *fpDecodiert; //Dateizeiger
	int i, buchstabe1, buchstabe2, tempSummand;

	fpCodiert = fopen(Dateiname, "rb");   //Dateien öffnen
	fpDecodiert = fopen("temp.bank", "wb");

	for(i = 0; !feof(fpDecodiert); i++) { //for-Schleife bis zum Dateiende
		buchstabe1 = fgetc(fpCodiert); //Buchstaben auslesen
		if(buchstabe1==EOF) { //Wenn Dateiende dann abbrechen
			break;
		}
		buchstabe2 = fgetc(fpCodiert); //Buchstaben auslesen
		tempSummand=buchstabe1+(buchstabe2*256)-offset; //Teilberechnung für die Verschlüsselung
		buchstabe1=tempSummand%256; //Rest ermitteln für buchstabe1
		buchstabe2=tempSummand/256; //Ergebnis ermitteln für buchstabe1
		do { //Solange buchstabe1 kleiner als 32 ist
			if( buchstabe1 < 32) buchstabe1 = buchstabe1 + 95; //Bereich festlegung in der ASCII-Tabelle
		}
		while(buchstabe1<32);
		do { //Solange buchstabe1 kleiner als 32 ist
			if( buchstabe2 < 32) buchstabe2 = buchstabe2 + 95; //Bereich festlegung in der ASCII-Tabelle
		}
		while(buchstabe2 < 32);
		fputc(buchstabe1 , fpDecodiert); //Einfügen des codierten Zeichens
		fputc(buchstabe2 , fpDecodiert); //Einfügen des codierten Zeichens
	}
	fclose(fpDecodiert); //Dateien wieder schließen
	fclose(fpCodiert);


MfG Radhad
 
Hier kommt das lustige Steuerzeichen bzw. Zeilenumbruch-Problem.

Also, Zeilenumbrüche (bzw. \n) haben üblicherweise den Wert 10. Unter Windows werden meistens zwei Zeichen am Stück als Zeilenumbruch gewertet, 13 und danach 10. Prüfe wenn möglich beide Varianten, und reagiere dann entsprechend darauf.

Noch eine Anmerkung, generell sind alle Zeichen mit einem Wert kleiner als 32 Steuerzeichen, die auch gar nicht darstellbar sind. Man könnte diese komplett übergehen und gar nicht mit verschlüsseln; auf die Zeilenumbrüche sollte man aber auf jeden Fall eingehen.
 
Also sollte ich etwas wie

Code:
if(buchstabe1==10)
  buchstabe1 = fgetc(fpCodiert);

nutzen?
 
In der Richtung, ja, aber drauf achten, dass 13 und 10 in Kombination nur EIN Zeilenumbruch ist. Je nach Lust und Laune kannst du natürlich auch die Kombination durchziehen, du schreibst ja den Text am Ende vermutlich wieder irgendwo hin?
 
Zurück