Buchstabenersetzung aus Datei

Dieses Thema im Forum "Schule, Studium, Ausbildung" wurde erstellt von matze-pe, 8. Februar 2014 .

Schlagworte:
  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;
    }
    
    
    
    
     
  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.
     
  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ß.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.