Text einlesen (c)

Regis Nosferatu

Grünschnabel
Hallo Leute!

Hätte da mal eine wichtige Frage:
Ich möchte mit C ein Programm schreiben, welches einen Text aus einer Datei zeilenweise einliest und diesen erstmal einfach nur wieder formatiert ausgibt. Das Problem dabei ist, es soll unter Linux den Dateinamen als Parameter von der Konsole bekommen...
(mit: 'cat <Dateiname> | <Programmname>' )
Wie bekomme ich das hin, ohne im Quelltext die zu öffnende Datei explizit anzugeben, bzw. abzufragen?

Wäre für schnelle Hilfe sehr dankbar...
 
cat <Dateiname> | <Programmname>
Wie bekomme ich das hin, ohne im Quelltext die zu öffnende Datei explizit anzugeben, bzw. abzufragen?
Useless use of cat: "Programmname <Dateiname"
Einfach von "stdin" lesen.
Code:
read(0, <buffer>, <length>)
 
Hallo,
wie du ja weißt werden in Linux so ziemlich alle Devices als Datei angesprochen,
folgendes sollte es von daher tun:

Code:
#include <iostream>
#include <fstream>

using namespace std;

int main(void)
{
    string puffer;
    ifstream in("/dev/stdin");
    in >> puffer;
    cout << "Die Eingabe lautete: " << puffer << endl;
    in.close();
    return 0;
}

Gruß

RedWing
 
Hallo Leute!

Vielen Dank erstmal für eure Antworten!
Hab allerdings noch `ne weitere Möglichkeit gefunden und werd` diese dann wohl auch nutzen:

Code:
int main (int argc, char*argv[])
{...}

Bis denn dann also
und trotzdem nochmals vielen Dank...
 
Regis Nosferatu hat gesagt.:
Hallo Leute!

Vielen Dank erstmal für eure Antworten!
Hab allerdings noch `ne weitere Möglichkeit gefunden und werd` diese dann wohl auch nutzen:

Code:
int main (int argc, char*argv[])
{...}

Bis denn dann also
und trotzdem nochmals vielen Dank...

Hallo,
wie meinen?
Falls du die Übergabeparameter an die main Funktion meinst(*argv[]) muss ich dir sagen das das
Einlesen so wie du es vor hast (über pipes) nicht möglich ist.
Die Übergabeparameter kannst du nur nutzen wenn du das Programm so änhlich aufrufen willst:
Code:
./program para1 para2 etc

Du wolltest es aber so machen wenn ich dich richtig verstanden hab:
Code:
echo Test | ./program
Und das geht nur indem du an stdin liest.

Gruß

RedWing
 
Zurück