C C - Textdatein als Argument an Mainfunktion übergeben

Tarores

Newbie
Registriert
Aug. 2015
Beiträge
4
Hallo,
ich suche zur Zeit in C eine Möglichkeit, wie ich eine Textdatei übergeben kann um sie dann im weiteren Verlauf zu bearbeiten.
Das der Aufruf über Konsole am Ende so aussieht ./main test.txt
Für jede Hilfe wäre ich dankbar.
 
Übergib den Pfad als String/Char-Array und öffne ihn in deinem Programm.
 
Eine der Signaturen für die main-Funktion lautet int main( int argc, char** argv );

In argv sind die Argumente, die ans Programm übergeben wurden (argc ist die Anzahl der Argumente). ACHTUNG: argv[ 0 ] ist der Name des Programms selbst.
 
Tarores schrieb:
ich suche zur Zeit in C eine Möglichkeit, wie ich eine Textdatei übergeben kann um sie dann im weiteren Verlauf zu bearbeiten.
Die Suche kann ja nun nicht sehr intensiv gewesen sein. Ich möchte hier im Interesse aller vorschlagen, in Zukunft wenigstens so zu tun, als hättest du versucht, dein Problem selbst zu lösen.
 
Eine der Signaturen für die main-Funktion lautet int main( int argc, char** argv );
In argv sind die Argumente, die ans Programm übergeben wurden (argc ist die Anzahl der Argumente). ACHTUNG: argv[ 0 ] ist der Name des Programms selbst.
Ja soweit bin ich auch gekommen, so kann man strings und theoretisch auch den Pfad der Datei übergeben, aber dies ist bei mir nunmal nicht das Problem, außer man kann so auch eine Datei direkt übergeben, was bei mir aber im Selbstversuch nicht geklappt hat. Vlt. habe ich etwas falsch gemacht.

Die Suche kann ja nun nicht sehr intensiv gewesen sein. Ich möchte hier im Interesse aller vorschlagen, in Zukunft wenigstens so zu tun, als hättest du versucht, dein Problem selbst zu lösen.
Die Suche findet ja noch weiterhin statt bislang habe ich jedoch noch nichts sinnvolles, außer so sinnlose Kommentare wie deinen gefunden. Wieso schreibst du überhaupt auf eine Frage einen dummen Kommentar, anstatt zu versuchen zu helfen, da muss wohl jmd. ECHT Langeweile haben.
 
Was willst du genau machen?
Wenn ich dich richtig verstehe, willst du in C ein Programm schreiben. In diesem Programm willst du eine .txt Datei öffnen/schreiben etc. Dazu willst du bei Start des Programms die Datei bzw. den Pfad zu jener übergeben? Soweit richtig?
Und was hat genau bei deinen bisherigen Ansätzen nicht geklappt?
 
Tarores schrieb:
Ja soweit bin ich auch gekommen, so kann man strings und theoretisch auch den Pfad der Datei übergeben, aber dies ist bei mir nunmal nicht das Problem, außer man kann so auch eine Datei direkt übergeben, was bei mir aber im Selbstversuch nicht geklappt hat.

Man übergibt den Pfad der Datei. Wenn Du an den Inhalt der Datei möchtest, musst Du diese in Deinem Programm einlesen.

Alternativ kann man auch von stdin lesen und dem Programm die Datei entsprechend übergeben.
 
Ja soweit ist es richtig, mal als Bsp. wie ich es versucht habe
int main(int argc, char** argv)
{
f1 = argv[1]; //Wobei FILE f1 weiter oben als File definiert wird
}
Das klappte nicht wirklich und ergab auch keinen wirklichen Sinn, aber einen besseren Ansatz hatte ich nicht gefunden.
 
Am besten ist du besorgst dir ein Grundlagenbuch zu C und fängst an die Sprache zu lernen, dann wirst du sehen, dass das ein triviales Problem ist.

Falls du weder Zeit noch Lust hast die Sprache zu lernen ( warum programmiertst du dann überhaupt?! ), kannst du ja auf Copy and Paste setzen und Tutorialcode kopieren, dazu musst du aber wissen, wonach du suchen musst.
Die zwei Begriffe, nach denen du suchen musst sind zum einen die möglichen Signaturen der main Funktion, so wie es dir antred schon gesagt hat und File IO, damit du Dateien öffnen und dann lesen und schreiben kannst.
Dazu findet man im Internet mehr Tutorials als sonst etwas, du musst nur danach suchen.

Gruß
BlackMark
 
Ohne C zu kennen:

Du kannst keine Datei übergeben, das Programm kann nur Strings als Parameter erhalten. In Deinem Fall enthält der String den Pfad zur Datei, den musst Du benutzen, um in Deinem Programm die Datei mit C Befehlen zu öffnen und dann z.B. zeilenweise einzulesen.

Sollte aber in jedem C Tutorial zum Umgang mit Textdateien erklärt werden. Google sollte helfen.
 
Tarores schrieb:
Das klappte nicht wirklich und ergab auch keinen wirklichen Sinn, aber einen besseren Ansatz hatte ich nicht gefunden.

Wie bist Du denn auf die Verwendung von FILE gestoßen? Und wie davon auf Deinen Code gekommen?

Wenn ich nach file im Zusammenhang mit C suche, komme ich sofort auf Beispiele, die zeigen, wie es geht.
 
Leider alles nicht sonderlich hilfreich für die Zukunft wäre es vlt. sinnvoll sich die Frage genau durchzulesen, aber egal...
Finde im Internet was meien gestellte Frage beantwortet zur Zeit nichts und wenn ihr schon alle die tollen Lösungen im Internet findet könnt ihr sie ja gerne hier reinschreiben. Denn die Lösungsvorschläge die bislang hier stehen sind leider nicht sonderlich sinnvoll, außer ich übersehe was, aber bevor ihr hier weiter nutzlose Ansätze postet schließt lieber einfach das Thema, danke oder auch nicht.
 
Deine Antworten sind noch nicht ignorant genug. Das muss besser werden. Auch könntest du unserer Hilfe mit härteren Beleidigungen begegnen. Dann bekommst du bestimmt, was du willst! (Was auch immer das sein mag)
 
Tarores schrieb:
Hallo,
ich suche zur Zeit in C eine Möglichkeit, wie ich eine Textdatei übergeben kann um sie dann im weiteren Verlauf zu bearbeiten.
Das der Aufruf über Konsole am Ende so aussieht ./main test.txt
Für jede Hilfe wäre ich dankbar.
Frage vorweg: Muss es C sein? Gerade Skriptsprachen liefern für solche Aufgaben einen wesentlich einfacheren Zugang.

Aber nun zu Deiner Frage:


Ich greif mal der einfachheithalber (weil im Internet verfügbar) auf das Buch C von A-Z zurück.
Dort findest Du einen Abschnitt zu Kommandozeilenargumente:
http://openbook.rheinwerk-verlag.de...te_001.htm#mjf6a9e42fa3bc25b2b1e06270e7bf8f68
als auch über Datei Ein-/Ausgabe:
http://openbook.rheinwerk-verlag.de...en_001.htm#mj136f9ac6b5b7c440aafe5010411ef011

Noch Fragen?

Gruß
Andy
 
Die Antwort, dass es so wie Du es Dir vorstellst nicht geht, wurde bereits mehrfach gegeben. Wenn Du es nicht einsehen willst und denkst, dass wenn es Dein Wille ist es auch so funktionieren musst, ist das Dein Problem. Dann wirst Du aber leider auch nicht programmieren lernen.
 
Ich find's erstaunlich, dass es nach seinem letzten Beitrag hier immer noch Leute gibt, die ihm ernsthaft helfen wollen. Nach solch einem Auftritt könnte er mich mal kreuzweise. :D
 
Ich versteh einfach garnicht wo das Problem sein soll, das ist auch kein C spezifisches Problem sondern ein allgemeines Verständnisproblem was übergabeparameter betrifft. argv[x]m ist ein Array wobei das X die Anzahl der Argumente darstellt und gleichzeitig die Größe des zu übergebenden Arrays, bzw. um welches Argument es sich handelt.
Wieso liest du die Datei nicht einfach in einer gesonderten Methode(Funktion) ein und verarbeitest sie dann weiter in deiner Main() ?
 
Zuletzt bearbeitet:
Vielleicht hat er ja die Datei wo anders schon offen und will den Pointer auf die Datei übergeben (Lässt Windows/Linux sowas überhaupt zu?).

er sagt ja nicht worum es genau geht.
 
@Nilson:
Da du dann in den Speicherbereich eines fremden Prozesses schreiben müsstest bräuchtest du Prozessnamen und dort die Adresse des Handles. Übergeben würde man das aber logischerweise trotzdem als String. Alles Andere wäre ja auch grober Unfug.

@DJ_We$t:
Der TE hat sich nicht damit auseinander gesetzt, wie man eine Datei öffnet, sonst hätte er das Problem bereits gelöst. Stattdessen verlangt (das war keine Bitte sondern eine Forderung) er, dass wir ihm hier eine fertige Lösung präsentieren. Damit antwortet er aber auch nicht mal auf Rückfragen. Im Moment weiß einfacher keiner, wo denn eigentlich das Problem liegt (außer, dass er kein C Tutorial über Datei-Handling lesen möchte).
Im Code versucht er nur einen String einem File-Handle zuzuweisen. Dass das so nicht geht hätte jedes x-beliebige Tutorial aufgezeigt. Dass es hier eine Funktion für das Öffnen gibt ist wirklich nicht schwer rauszufinden.

Googlesuche "C File" ergibt direkt zB diesen Treffer: http://www.tutorialspoint.com/cprogramming/c_file_io.htm
 
Zurück
Oben