+ Antworten
Ergebnis 1 bis 11 von 11

Ansi C Datei I/O

Diskussion über Ansi C Datei I/O in C und C++ der Kategorie Programmierung; Hallo, der folgende Ansi C Code ließt aus der Datei "C:\Text.txt" die erste Zeile aus. Ausgegeben werden die ersten 3 ...

  1. #1
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard Ansi C Datei I/O

    Hallo,

    der folgende Ansi C Code ließt aus der Datei "C:\Text.txt" die erste Zeile aus.

    Ausgegeben werden die ersten 3 Zeichen und eine Zeile tiefer im Ausgabefenster die nächsten 3 Zeichen.

    Code:
    {
    {
    char data_1[255]; 
    
    char aa[255];
    char bb[255];
    FILE *ptr;	
    ptr = fopen("C:\\Text.txt", "r");  //Textdatei öffnen
    
     if (ptr !=NULL) // Ist der File vorhanden ? Wenn nicht Fehlermeldung
    {  
    fgets(data_1, 255, ptr);		//Die Zeile wird aus der Textdatei wird eingelesen
    strcpy(aa, data_1);
    strcpy(bb, data_1);
    {
    char* substr = &aa[0];
    aa[3] = '\0';
    printf( "Wert 1 aus Zeile 1:    '%s'\n", substr , "%s\n");
    }
    {
    char* substr = &bb[3];
    bb[6] = '\0';
    printf( "Wert 2 aus Zeile 1:    '%s'\n", substr , "%s\n");
    }
    if( ptr != NULL )                                    // Wenn nichts in der Textatei steht, springe nach unten und schliesse die Datei
    {
    }
     fclose( ptr );		//Textdatei schliessen	
    }
    else
         printf ("Error: File not found!\n");
       }
    }
    Ich hätte mal die Frage, wie ich denn an die letzen 3 Zeichen in der Textdatei herankommen kann, wenn diese nicht in der ersten Zeile der Textdatei stehen, sondern in der zweiten Zeile der Textdatei ?

    Gruß
    Eleu
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  2. #2
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Eleu Beitrag anzeigen
    Ich hätte mal die Frage, wie ich denn an die letzen 3 Zeichen in der Textdatei herankommen kann, wenn diese nicht in der ersten Zeile der Textdatei stehen, sondern in der zweiten Zeile der Textdatei ?
    Lies zeilenweise aus der Datei, bis du das Ende der Datei erreichst, dann ermittle die letzten 3 Zeichen der zuletzt eingelesenen Zeile.

    Beachte, dass die letzte Zeile möglicherweise kürzer als 3 Zeichen ist.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  3. #3
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Hallo,

    danke für den Tipp.

    Habe jetzt einfach noch mal die Funktion fgets geschrieben.

    Also so:

    Code:
    fgets(data_2, 255, ptr);
    Funktioniert auch soweit.


    Zitat Zitat von Klotzkopp Beitrag anzeigen
    bis du das Ende der Datei erreichst, dann ermittle die letzten 3 Zeichen der zuletzt eingelesenen Zeile.

    Beachte, dass die letzte Zeile möglicherweise kürzer als 3 Zeichen ist.
    Wieso ?

    Wenn in der Datei nichts mehr drin steht, wird halt nichts ausgegeben ?

    Gruß
    Eleu
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  4. #4
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Eleu Beitrag anzeigen
    Funktioniert auch soweit.
    Ja, bis deine Datei mal irgendwann drei Zeilen hat. Es wäre möglicherweise besser, gleich das allgemeine Problem zu lösen.

    Zitat Zitat von Eleu Beitrag anzeigen
    Wenn in der Datei nichts mehr drin steht, wird halt nichts ausgegeben ?
    Deine Berechnung, wo die letzten drei Zeichen einer Zeile anfangen, können dich vor den Anfang der Zeile bringen, wenn die Zeile weniger als drei Zeichen enthält. Und das erzeugt undefiniertes Verhalten.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  5. #5
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Wie geht denn das ?
    Hast Du ein Beispiel, oder einen Link für mich ?
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  6. #6
    Reg.-Benutzer Avatar von lilith2k3
    Reg.-Datum
    10.03.2010
    Ort
    Osnabrück
    Beiträge
    828

    Standard

    Kann man nicht, um die letzten drei Zeichen zu Ermitteln mit fseek den Lesezeiger auf 3 Zeichen vor SEEK_END setzen und einfach von da aus bis zu m Ende ausgeben lassen? (oder habe ich die Anforderung gerade falsch interpretiert und es geht um die letzten drei Zeichen einer jeden Zeile?)
    Experience is what you get when you didn't get what you wanted.

  7. #7
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Also die Anforderung ist einfach aus einer x-beliebige Textdatei an bestimmten festgelegten Stellen Daten auszulesen
    und weiter zu verarbeiten.
    Die Daten müssen in der Textdatei immer an der gleichen Stelle stehen, sonst ist es unmöglich.
    Zum Beispiel als Schnittstelle zwischen zwei Systemen.
    Eine Datei zum lesen und eine Datei zum schreiben.
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  8. #8
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Eleu Beitrag anzeigen
    Wie geht denn das ?
    Hab ich doch geschrieben.


    Zitat Zitat von lilith2k3 Beitrag anzeigen
    Kann man nicht, um die letzten drei Zeichen zu Ermitteln mit fseek den Lesezeiger auf 3 Zeichen vor SEEK_END setzen und einfach von da aus bis zu m Ende ausgeben lassen?
    fseek ist unter Windows unzuverlässig, wenn die Datei im Textmodus geöffnet wurde. Ansonsten würde das funktionieren.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  9. #9
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Eleu Beitrag anzeigen
    Also die Anforderung ist einfach aus einer x-beliebige Textdatei an bestimmten festgelegten Stellen Daten auszulesen
    und weiter zu verarbeiten.
    Die Daten müssen in der Textdatei immer an der gleichen Stelle stehen, sonst ist es unmöglich.
    In deinem ersten Beitrag hast du von den letzten 3 Zeichen der Datei geschrieben. Das ist nur dann immer die gleiche Stelle, wenn die Datei immer gleich lang ist. Ist das der Fall?
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  10. #10
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Ja das ist der Fall...

    Es würde mich trotzdem interessieren, wie das geht ?

    Etwa mit fscanf die Zeichenanzahl bis zum Ende der Datei über den Rückgabewert ermitteln ?

    Und dann immer rückwärts (subtrahieren) um an die Stellen zu kommen ?
    Oder wie meinst Du das ?

    Und wenn ja, wie muss ich das Programmieren ?
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  11. #11
    Moderator Daily Talk Avatar von Guybrush Threepwood
    Reg.-Datum
    01.09.2002
    Ort
    Melee Island
    Beiträge
    4.413
    Ich bin Guybrush Threepwood, ein mächtiger Pirat!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Oracle & ANSI SQL
    Von Vampire im Forum Datenbanken
    Antworten: 6
    Letzter Beitrag: 27.01.2005, 20:29
  2. Ansi C - datei einlesen - schreiben
    Von Troja2k im Forum C und C++
    Antworten: 4
    Letzter Beitrag: 03.09.2004, 12:54
  3. ANSI C Sortieralgorithmen
    Von KJ187 im Forum Algorithmik
    Antworten: 2
    Letzter Beitrag: 12.07.2004, 23:23
  4. Hochzahlen in Ansi C
    Von CK82 im Forum C und C++
    Antworten: 2
    Letzter Beitrag: 23.05.2002, 10:48
  5. Unicode, Ansi....
    Von DannyUlm im Forum Windows Betriebssysteme
    Antworten: 3
    Letzter Beitrag: 07.12.2001, 16:09

Die häufigsten Suchbegriffe für diese Seite:

Bisher noch keine Treffer von einer Suchmaschine