PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : File Zeilenweise auslesen



Debuger
21-01-2002, 07:44
wie kann man ein Textfile zeilenweise auslesen und dabei jede Zeile nummerieren??

rup
21-01-2002, 11:27
Hallo Debuger,

folgendes C++ Programm liest z.B. deine /etc/fstab zeilenweise ein, und gibt sie mit Zeilen Nr. am Bildschrim und in die Datei fstab.txt (im aktuellen Verszeichnis) aus. Mit "g++ programm.cpp -o programm" kannst du das Programm compilieren.

Gruss Rupert



#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

int main()
{
ifstream leseDatei( "/etc/fstab" ); // Eingabe Datei
ofstream schreibeDatei( "fstab.txt" ); // Ausgabe Datei

string Zeile;
int i=1;
while (getline(leseDatei,Zeile)) // Zeilenweise lesen
{
stringstream S;
S << i++ << ": " << Zeile << endl; // Zeile bearbeiten
cout << S.str(); // Ausgabe auf den Bildschirm
schreibeDatei << S.str(); // Ausgabe in die Datei fstab.txt
}
}

Debuger
21-01-2002, 12:01
THX

thommy
21-01-2002, 13:56
Warum so umständlich?

nl /etc/fstab

oder

awk '{print NR, $0}' /etc/fstab

Thomas

rup
21-01-2002, 15:47
@ thommy:

Weil ich nl bis heute nicht gekannt habe :eek:
und weil ich von awk Null Ahnung habe :(

und weil die Frage natuerlich im Prog-Forum und nicht im Script-Forum steht :D

Gruss Rupert

Debuger
22-01-2002, 15:33
#include <stdio.h>

void abbruch(void);
int zeile;

int main(int argc, char *argv[])
{
char puffer[128];
FILE *textdatei;

if (argc < 2) {
printf("Kein Argument angegeben\n");
getchar();
return 1;
} // if

if ((textdatei = fopen (argv[1], "r" )) == NULL) {
fprintf(stderr, "Sh*** ein Fehler beim oeffnen der datei %s ist aufgetreteten!",argv[1]);
getchar();
return 1;
} // if

while (fgets(puffer,128,textdatei) != NULL) {
fprintf(stdout, "%4d:\t%s", zeile++,puffer);
} // while

fclose(textdatei);
getchar();
return 0;

} // main

eir kannich das alles rückwärts ausgeben.???
Ich meine nur die Zeilen nicht alle Buchstaben.