C: Textdatei zeichenweise vergleichen?
Ich sitze jetzt seit längerem an der Aufgabe. Ich muss zwei Dateien lesen und miteinander vergleichen. Bei einem Unterschied soll ich aufhören und die Anzahl der gemeinsamen Buchstaben ausgeben.
Mein Problem: In a wird fp1 gespeichert, aber in b wird fp2 nicht gespeichert. Ich verstehe nicht warum?
Kann mir jemand helfen?
int main()
{
FILE *fp1 = fopen("datei1.txt", "r");
FILE *fp2 = fopen("datei2.txt", "r");
int a, b;
int summe = 0;
while ((a = fgetc(fp1)) != EOF || (b = fgetc(fp2)) != EOF) {
if (a != b) {
break;
}
summe++;
}
printf("summe: %d", summe);
}
Danke im Voraus.
3 Antworten
Du benutzt den logischen OR-Operator. Wenn dessen erster Term bereits wahr ist, wird der zweite nicht mehr ausgeführt.
JAAAA Super vielen Dank sehe ich jetzt. logik fehler. Danke auch an die anderen, die den selben fehler erkannt haben
Weil immer nur die erste Bedingung vom if ausgewertet wird, wenn diese true ist.
Denn (true OR (true|false)) ist immer true, deshalb kann man sich das sparen
Stell die Bedingung um, sodass ein AND verwendet wird dann klappt es
Sehe ich sofort:
Wegen des "||"-Operators wird der zweite Teil des Ausdrucks nicht ausgewertet, wenn der erste bereits "TRUE" zurückgibt.
Von der Logik her wäre sowieso ein "&&" sinnvoller.