#1 8. Februar 2014 Hallo, ich habe ein Problem mit einer Aufgabe. Ich möchte ein Programm zeilenweise einlesen. Dann wird jede Zeile in ein Array kopiert und anschließend überprüft ob ein Arrayelement mit einem Char vergleichen. Wird an einer Stelle eine Übereinstimmung gefunden, so wird diese Stelle gegen einen anderen Buchstaben ausgetauscht. Anschließend werden alte und neue Zeile mittels printf ausgegeben und die Gesamtanzahl der Buchstabenersetzungen ausgegeben. Ich weiß leider nicht wo mein Fehler liegt, da die Textersetzung nicht funktioniert. Hier mein Programmcode: Code: #include <stdio.h> #include <stdlib.h> int main () { FILE *input; int n = 0; // Aufzählungsvaribale char bs1 = 0; // Buchstabe zu ersetzen char bs2 = 0; // Buchstabe ersetzt int i = 0; // Laufvariable (for)-Schleife int ers = 0; // Gesamt an Ersetzungen char feld [80]; // Feld aus Datei printf ("Buchstabe 1: "); scanf ("%s", &bs1); printf ("Buchstabe 1: %c \n",bs1); printf ("Buchstabe 2: "); scanf ("%s", &bs2); printf ("Buchstabe 2: %c \n\n\n",bs2); // Öffnet die Quelldatei input = fopen( "beispieltext.txt", "r" ); // Überprüfen ob Datei gelesen wurde if (input == NULL) { printf ("Quelldatei nicht lesbar.\n"); return -1; } // Datei wurde erfolgreich gelesen -> Zeile in String speichern else { // Kopiert jede Zeile in das feld while ( fgets (feld , 80 , input) != NULL ) { n++; printf ("%d. Zeile Original:\t %s",n, feld); // Das Feld wird mit den Buchstaben verglichen und ggf ersetzt for (i=0; i>=80; i++) { if (feld[i]==bs1) { feld[i]=bs2; ers++; } else { continue; } } printf ("%d. Zeile Neu:\t\t %s",n, feld); printf ("--------------------\n\n\n"); } printf ("Insgesamt %dx Ersetzungen!\n",ers); fclose (input); } return 0; } + Multi-Zitat Zitieren
#2 8. Februar 2014 AW: Buchstabenersetzung aus Datei Kann dir leider nicht weiterhelfen, aber bitte mal einen Mod, dass in "Programmierung und Entwicklung" zu verschieben, da findet sich sicherlich schneller jemand, der dir helfen kann. + Multi-Zitat Zitieren
#3 8. Februar 2014 AW: Buchstabenersetzung aus Datei %c wäre in scanf() als Formatierung erforderlich. %s mag auch gehen aber überschreibt so auch deine Variable über ihre Grenze hinaus, sollte mehr als ein Zeichen eingegeben werden. Die for-Aussage (i >= 80) ist nicht korrekt. Du willst bis 79 hochzählen (0 - 79, 0 eingeschlossen, ergibt 80 Felder; wie reserviert). Also: i < 80. Der else-Zweig deiner if-Anweisung ist unnötig, stört aber auch nicht groß. + Multi-Zitat Zitieren