Tabulator beim einlesen



  • Hallo zusammen,

    ich habe ein Problem mit einem c-Programm.

    #include <stdio.h>
    #include <stdlib.h>

    int main(void) {
    FILE *fp;
    int neu;
    int getc(FILE *fp);
    fp = fopen ("testdatei.txt", "r");

    while((neu=getc(fp))!= EOF )
    putc(neu,stdout);

    return 0;

    }
    Inhalt testdatei:
    012\tabc

    Bei der Ausgabe gibt die Console erwartungsgemäß den Inhalt der Textdatei aus.
    Ich möchte aber, das der Tabulator ersetzt wird. Durch welche Programmerweiterung wäre dies möglich?

    Eine schnelle Antwort wäre super 🙂



  • Etui schrieb:

    Durch welche Programmerweiterung wäre dies möglich?

    Eine if-Abfrage ob das eingelesene Zeichen ein Tabulator ist.

    Willst du den Tabulator in der Original-Datei erstzen oder in einer neuen Datei oder nur bei der Ausgabe?

    Warum deklarierst du getc selber? Das wird schon in stdio.h gemacht.



  • Die Textdatei soll nur in der Standartausgabe ausgegeben werden.

    Was soll in der if-Ausführung stehen?



  • Etui schrieb:

    Was soll in der if-Ausführung stehen?

    Eine Prüfung, ob's ein Tab ist.
    ~Ask a stupid question, and you get a stupid answer.~



  • if(neu = '\t')

    ??



  • Etui schrieb:

    Die Textdatei soll nur in der Standartausgabe ausgegeben werden.

    Die Art wie man steht ist was anderes.

    Etui schrieb:

    Was soll in der if-Ausführung stehen?

    Was wolltest du noch gleich machen? Tabulator ersetzen.

    Wenn du einen Tabulator eingelesen hast, dann ein anderes Zeichen ausgeben,
    sonst das eingelesene Zeichen.

    Wenn-dann-sonst Wenn du die englischen Wörter dazu nicht kennst, dann nimm leo.org





  • Etui schrieb:

    if(neu = '\t')

    ??

    Nö.
    Einen Vergleich, keine Zuweisung.



  • Das ist die eigentliche Aufgabe...

    Schreiben Sie ein Programm expand, das als Kommandozeilenparameter einen Dateinamenerwartet. Der Inhalt dieser Datei soll zur Standardausgabe kopiert werden. Dabei ist aber jeder Tabulator (in C dargestellt durch '\t') in die entsprechende Anzahl Leerzeichen umzuwandeln.
    Wird kein Dateiname angegeben,ist die Standardeingabe als Eingabe zu verwenden.
    Zur Erläuterung: Ein Tabulator setzt die Ausgabe an der nächsten durch 8 teilbaren
    Zeichenpositionfort. Das erste Zeichen zählt dabei als Nummer 0.

    Anstelle von \t soll also wirklich ein Tabulator; also die anzahl an leerzeichen ausgegben werden.



  • Etui schrieb:

    Das ist die eigentliche Aufgabe...

    War zu erwarten.

    Wie ist deine Frage?

    Falls du meinst, wir machen deine Hausaufgaben, dann irrst du dich.
    Wenn du Pech hast, schreibt irgendeiner das fertige Programm für dich.

    Wenn du konkrete Fragen hast, helfen wir.

    Vor 11 Tagen war schon mal so eine Aufgabe im Forum.


Log in to reply