Verständnisproblem
-
Hallo zusammen,
ich habe in meinem C-Buch eine Aufgabe, bei der ich nicht weiter kam,bzw.
ich sollte ein Programm entwicklen, wofür noch nicht die nötigen Kapitel behandelt wurden.Ich habe im Internet einen Lösungsvorschlag gefunden.
#include <stdio.h> int main() { int c1; int c2; const char *const STOP_SEQUENCE = "XZ"; int stop; stop =0; c1 = getchar(); while( !stop && (c2=getchar()) ) { if( c1==STOP_SEQUENCE[0] && c2==STOP_SEQUENCE[1]){ stop = 1; } else { /* Encrypt */ c1 = c1 + 3; putchar(c1); /* Shift input fifo */ c1 = c2; } } return 0; }
Das Prinzip der Verschlüsselung ist mir schon klar, aber was hat es mit dem char STOP Sequence auf sich, und wie genau funktioniert dieser Vergleich bei der if-Anweisung, warum wird STOP Sequence mit c1 und c2 verglichen, und wann werden diese jemals gleich, was hat das mit den eckigen Klammern auf sich, soll das so ne Art Array darstellen??
Ich mein wenn XZ eingegeben wird, wird das Programm beendet, schon klar, aber wie funktioniert der Vergleich? mit stopsequence[0] und [1]??Hab erst vor 2 Tagen angefangen, bitte ein wenig nachsichtig sein^^
Grüße,
karel2
-
karel2 schrieb:
warum wird STOP Sequence mit c1 und c2 verglichen, und wann werden diese jemals gleich, was hat das mit den eckigen Klammern auf sich, soll das so ne Art Array darstellen??
Ich mein wenn XZ eingegeben wird, wird das Programm beendet, schon klar, aber wie funktioniert der Vergleich? mit stopsequence[0] und [1]??
karel2Ja genau, STOP_SEQUENCE ist ein Array. In STOP_SEQUENCE[0] steht 'X' und in STOP_SEQUENCE[1] steht 'Z'. c1 ist das vorletzte und c2 ist das letzte Zeichen, welches eingelesen wurde. Da die Abbruechsequenz 2 Zeichen lang ist, müssen die letzten 2 Zeichen, die eingelesen wurden, übereinstimmen. Das wird mit c1==STOP_SEQUENCE[0] && c2==STOP_SEQUENCE[1] überprüft.
Gruss Gnoeg
-
Aber in dem Array stehen doch nur Zeichen drin
[0]= X
[1]= Z
oder?
c1 und c2 sind ja nur die Dezimalzahl im ASCII-Code dieser Zeichen,
wie also kann er das vergleichen?
-
wenn man in C einen int mit einem char vergleicht ist zb. 90 gleich wie 'Z'
Gruss Gnoeg
-
Problem solved.