C - Zeilenanfang einer Datei bestimmen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 12.11.2009 15:37:24

Hallo,

ich möchte mit Hilfe eines C-Programms in einer Datei bestimmte Zeilen finden, diese ergänzen und die Datei anschließend abspeichern.

Wie kann ich in C den Anfang der Zeile ermitteln bzw. die Position des Zeigers auf den Anfang der Zeile setzen?

Benötige z.b. keine Zeilen, die mit #-Anfangen.


Danke & Gruß,
Daniel
Oh, yeah!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 16:45:19

Zeilenweise Ein-/Ausgabe von Streams

Dann vllt sowas :?:

Code: Alles auswählen

char * Zeile = "";
char * Zeilenanfang =& Zeile[0];
Du könntest auf die Zeile(n) auch regex anwenden.

Oder wenn es kleine Dateien sind, komplett einlesen, und mit strtok() und '\n' was machen.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 12.11.2009 17:27:51

Danke.
Aber welche der beiden Varianten eignet sich denn besser?
(Es handelt sich um eine kleine Datei mit ca. 130 Zeilen)
Oh, yeah!

Benutzeravatar
hikaru
Moderator
Beiträge: 13931
Registriert: 09.04.2008 12:48:59

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von hikaru » 12.11.2009 17:48:13

Bei 130 Zeilen würde ich die Variante mit dem kompletten Einlesen der Datei und den Einsatz von Stringfunktionen nehmen. Falls sich dein Suchmuster in einer (oder wenigen) übersichtlichen Regex ausdrücken lässt, gern auch damit.
Das ist zwar nicht so Performant wie die Streamvariante, aber die Performance dürfte hier eher zweitrangig sein, und der Code bleibt übersichtlicher.

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 17:50:39

Hier mal wie ich eine Datei in eine Variable einlesen würde (als Hobby Coder) ohne Fehlerbehandlung :roll:

Code: Alles auswählen

#include <stdio.h>
int main(int argc, char * argv[])
{
         char * var = NULL, c;
         int cnt = -1, len = cnt;
         FILE * f = fopen(argv[1],"r");
         var = (char *) calloc(var, sizeof(char));
         len++;
         while((c=getc(f)) != EOF){
                 cnt++;
                 var[cnt]=c;
                 if(len<cnt){
                         var = (char *) realloc(var,BUFSIZ*sizeof(char));
                         len += BUFSIZ;
                 }
         }
         fclose(f);
         printf("%s", var);
         free(var);
         /* ... */
         return 0;
 }


lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 19:16:25

@Duff: Vllt ist es ist in deinem Fall sogar besser, die Zeilen in ein 2D-Array einzulesen :?:

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 12.11.2009 19:26:38

i hat geschrieben:@Duff: Vllt ist es ist in deinem Fall sogar besser, die Zeilen in ein 2D-Array einzulesen :?:
Wenn du mir sagen kannst wie groß man das Array wählen soll.
Use ed once in a while!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 19:30:10

So lang wie die Datei Zeilen hat die 1. Dimension mit jeweils ein Zeiger auf ein zweites char Array was die Zeile enthält :?: Das ganze natürlich Dynamisch ...

Jürgen Wolf hat sogar ein eigenes Kapitel dazu :arrow: Zweidimensionale dynamische Arrays

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 12.11.2009 20:15:23

i hat geschrieben:So lang wie die Datei Zeilen hat [...]
Aber du hast schon verstanden auf was ich mit meiner ``Metafrage'' hinweisen wollte, oder?
[...] die 1. Dimension mit jeweils ein Zeiger auf ein zweites char Array was die Zeile enthält :?: Das ganze natürlich Dynamisch ...
Man kann das so machen, doch im Normalfall sollte man solche komplizierten Strukuren vermeiden.
Use ed once in a while!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 20:22:10

Meillo hat geschrieben: Aber du hast schon verstanden auf was ich mit meiner ``'metafrage' hinweisen wollte, oder?
Metafrage, hm ich habe echt keine Ahnung ...

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 12.11.2009 20:31:12

i hat geschrieben:
Meillo hat geschrieben: Aber du hast schon verstanden auf was ich mit meiner ``metafrage'' hinweisen wollte, oder?
Metafrage, hm ich habe echt keine Ahnung ...
Zugegeben, es war keine Metafrage. (Memo an mich: Zuerst nachlesen was irgendwelche coolen Fachbegriffe wirklich bedeuten bevor ich sie verwende. ;-) )

Ich habe nicht gefragt weil ich keine Antwort darauf kenne; ich habe gefragt damit du merkst, dass es ein Problem ist eine *gute* Antwort auf die Frage zu geben.

Wer mag schon wissen wie groß die Dateien sein werden mit denen man das Programm mal verwenden will? Natürlich lässt sich mit malloc() und viel Mehraufwand alles irgendwie dynamisch verwalten, doch meist kann man das mit einem besseren Design vermeiden.
Use ed once in a while!

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 20:52:50

Meillo hat geschrieben: Ich habe nicht gefragt weil ich keine Antwort darauf kenne;
Das habe ich mir gedacht :)
Meillo hat geschrieben: ich habe gefragt damit du merkst, dass es ein Problem ist eine *gute* Antwort auf die Frage zu geben.
Schon klar. Wir haben hier ja schon gut 3 Ansätze.
, doch meist kann man das mit einem besseren Design vermeiden.
Genau das wolle ich mit dem Array eigentlich erreichen.
Vllt hast du ja die Zeit hier kurz was besseres zu skizzieren. Damit wir auch was lernen^^
(Ein schicker link würde ja reichen)

PS:
Ich habe die Aufgabe von Duff mal so interpretiert
Ich will auf alle Zeilen zugreifen können und diese ggf wie einen String bearbeiten können.

Das kann ich schlecht on the fly mitten in der Datei machen. Also müssen die Daten in den Speicher es sei denn ich Arbeite mit einer (2.) Ausgabe-Datei. Lese Zeile aus der (orig) Eingabe Datei :arrow: Bearbeite Zeile :arrow: Schreibe Zeile in Ausgabe-Datei.
Oder ich lade die Komplette Datei in eine Daten-Strucktur und überschreibe damit später die Datei wieder.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 12.11.2009 21:01:41

i hat geschrieben:Vllt hast du ja die Zeit hier kurz was besseres zu skizzieren. Damit wir auch was lernen^^
Gerne.
(Ein schicker link würde ja reichen)
Ein schicker Link zu was? Bücher wie man besser programmiert? Diese Links kannst du dir selbst generieren, indem du nach Kernighan und Pike (oder den anderen Unix-Jungs) suchst.
Ich habe die Aufgabe von Duff mal so interpretiert
Ich will auf alle Zeilen zugreifen können und diese ggf wie einen String bearbeiten können.
Bevor man irgendwelche Designüberlegungen macht, sollte man die Anforderungen erst *genau* kennen. Denn kleine Änderungen können große Auswirkungen haben.

Wenn Duff seine Anforderungen genau spezifiziert, schlage ich gerne was vor.
Das kann ich schlecht on the fly mitten in der Datei machen. Also müssen die Daten in den Speicher es sei denn ich Arbeite mit einer (2.) Ausgabe-Datei. Lese Zeile aus der (orig) Eingabe Datei :arrow: Bearbeite Zeile :arrow: Schreibe Zeile in Ausgabe-Datei.
Oder ich lade die Komplette Datei in eine Daten-Strucktur und überschreibe damit später die Datei wieder.
Wenn möglich sollte das Programm natürlich ein Filter werden, für spätere Wiederverwendbarkeit.

Aber, wie gesagt, mal abwarten wie die Anforderungen *wirklich* sind.
Use ed once in a while!

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von schorsch_76 » 12.11.2009 21:19:53

Nicht ganz Ontopic, aber das wäre eine C++ Lösung für dein Problem im Startpost ;)

Code: Alles auswählen

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

int main(int argc, char** argv)
{
	std::string filename = "test.txt";
	std::string muster = "muster";
	std::string ersatz = "-123-";

	std::ifstream ifs(filename.c_str());
	if (ifs.is_open())
	{
		std::string zeile;
		while (std::getline(ifs, zeile))
		{
			std::cout << "Orginal:" << zeile <<std::endl;

			size_t pos = zeile.find(muster);
			while (pos != std::string::npos)
			{
				zeile.erase(pos,muster.length());
				zeile.insert(pos,ersatz);

				pos = zeile.find(muster,pos+ersatz.length());
			}

			std::cout << "Ersatz:" << zeile <<std::endl;
		}
	}
	return 0;
}
Das macht z.b. aus

Code: Alles auswählen

zeile nix
Zeile 2
muster1 und muster2
nochwas
das hier

Code: Alles auswählen

zeile nix
Zeile 2
-123-1 und -123-2
nochwas
Gruß

schorsch

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von lemak » 12.11.2009 21:42:03

und genau diese Lösung finde ich zu starr und langweilig ;)
(Auch wenn sie das Probl. imo löst.)

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von schorsch_76 » 12.11.2009 21:51:17

i hat geschrieben:und genau diese Lösung finde ich zu starr und langweilig ;)
Naja, sie hat keinen Thrill sich um Speicherverwaltung kümmern zu müssen. Keine direkte Pointerarithmetik! naja, Einfach Langweilig ;)

Gruß

schorsch

P.S.: Das lässt sich einfach auch erweitern, dass es ähnlich wie grep arbeitet :wink:

cat text | meinprogi muster -123- > ausgabe.txt

Code: Alles auswählen

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

int main(int argc, char** argv)
{
	if (argc != 3)
	{
		std::cout << "Usage: myfilter muster ersatz" << std::endl;
		return -1;
	}

	// now do work
	std::string muster = argv[1];
	std::string ersatz = argv[2];

	//if (ifs.is_open())
	{
		std::string zeile;
		while (std::getline(std::cin, zeile))
		{
			size_t pos = zeile.find(muster);
			while (pos != std::string::npos)
			{
				zeile.erase(pos,muster.length());
				zeile.insert(pos,ersatz);

				pos = zeile.find(muster,pos+ersatz.length());
			}

			std::cout << zeile <<std::endl;
		}
	}
	return 0;
}

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 13.11.2009 07:54:52

Erstmal Danke für die vielen Beiträge.

Ich möchte eigentlich keine fertige Lösung präsentiert bekommen, sondern lieber einen Tipp, welchen der vielen vorgeschlagenen Lösungswege ich denn am besten verwenden sollte.
In einer einfachen Textdatei (es handelt sich um eine Konfigurationsdatei), sollen 2 Zeilen an einer bestimmten Stelle eingefügt werden und 2 vorhandenen Zeilen sollen um weitere Parameter ergänzt werden.

(Habe dies mit sed zwar schon gelöst, würde es aber gerne mit C realisieren, weil ich mir diese Programmiersprache aneignen möchte und dies für mich eine gute und nutzvolle Praxisübung ist)
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 13.11.2009 12:20:50

Duff hat geschrieben:Ich möchte eigentlich keine fertige Lösung präsentiert bekommen, sondern lieber einen Tipp, welchen der vielen vorgeschlagenen Lösungswege ich denn am besten verwenden sollte.
Loblich.
In einer einfachen Textdatei (es handelt sich um eine Konfigurationsdatei), sollen 2 Zeilen an einer bestimmten Stelle eingefügt werden und 2 vorhandenen Zeilen sollen um weitere Parameter ergänzt werden.
Ich würde zeilenweise in sowas wie buffer[BUFSIZ] einlesen. Dort kannst du dann schauen ob es eine entsprechende Zeile ist (direkt mit buffer oder mit strtok() zum Beispiel).

Ich würde das Programm als Filter implementieren und einen kleinen Shell-Script-Wrapper drumrum bauen der die Ausgabe in eine zweite Datei umleitet und anschließend zurück kopiert.

(Habe dies mit sed zwar schon gelöst, würde es aber gerne mit C realisieren, weil ich mir diese Programmiersprache aneignen möchte und dies für mich eine gute und nutzvolle Praxisübung ist)

Da hast du dir gerade eines der Probleme ausgesucht für die C nicht gerade geeignet ist. (Das ist einer der Gründe warum gibt es awk gibt.)

Implementiere erstmal lieber was mit verketteten Listen und Bäumen und viel Berechnung (z.B. eine Suche im Labyrinth), das ist eher die Welt von C. Das soll aber nicht heißen, dass du dein Programm nicht schreiben sollst.
Use ed once in a while!

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von schorsch_76 » 13.11.2009 12:21:23

Hallo Duff!

An deiner Stelle würd ich das Problem in C in Teilprobleme zerlegen:

a) Wie finde ich den Anfang eines Musters in einer Zeile?
b) Wie lösche ich das Muster aus dem String?
c) Wie füge ich den Ersatz an der Stelle ein?

Vorschlag:

Code: Alles auswählen

int FindeMuster(const char* string, const char* muster)
{
  // TODO
}
void LöscheMuster(char* string, int laengfe_zu_loeschen)
{
  // TODO
}
void FuegeErsatzEin(char* string, const char* ersatz, int startposition)
{
  // TODO
}
Das ganze wird dann in entsprechende Schleifen gepackt ;)

Gruß

schorsch

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von cosmac » 13.11.2009 13:17:29

Meillo hat geschrieben:
In einer einfachen Textdatei (es handelt sich um eine Konfigurationsdatei), sollen 2 Zeilen an einer bestimmten Stelle eingefügt werden und 2 vorhandenen Zeilen sollen um weitere Parameter ergänzt werden.
Ich würde zeilenweise in sowas wie buffer[BUFSIZ] einlesen. Dort kannst du dann schauen ob es eine entsprechende Zeile ist (direkt mit buffer oder mit strtok() zum Beispiel).

Ack, bei Aufgaben, die von Natur aus Zeilenorientiert sind, sollte man das ausnutzen. Mit getline() muss man sich nicht mal mehr um BUFSIZ kümmern, getline() macht intern ein malloc(). Seit Squeeze bzw. Posix2008 gibt's die Funktion auch offiziell und nicht nur für GNUler.
Beware of programmers who carry screwdrivers.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 13.11.2009 18:50:21

Versuche, die Datei in ein zweidimensionales Array zu lesen (scheitere aber an verschiedenen Stellen).

http://nopaste.debianforum.de/31484
Oh, yeah!

Benutzeravatar
schorsch_76
Beiträge: 2612
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von schorsch_76 » 13.11.2009 21:43:49

Hi Duff,

Zeile 10

Code: Alles auswählen

   char **matrix;
entfernt die erste Warnung (main.c:35: warning: assignment from incompatible pointer type)

Zeile 43

Code: Alles auswählen

matrix[i]=(char*)fgets(puffer, BUF, f);
entfernt die zweite Warnung (main.c:43: warning: assignment makes integer from pointer without a cast))

Kleine Frage für dich zum Nachdenken: Was machst du wenn eine Zeile mehr als 255 Zeichen hat? Tipp: realloc

Hier ein Code: http://nopaste.debianforum.de/31491

Gruß

schorsch

EDIT:
Zeile 28: matrix=(char**)malloc(zeile * sizeof(int *));
Wie viele Zeilen willst du den reservieren? Hier ist zeile noch 0. Oder schlimmer: Irgendein grosser Wert. Initialisiere immer erst deine Variablen.

EDIT2:
Vermutlich bist du beim ermitteln der Zeilen/Spalten etwas unsicher gewesen oder weist nicht wie man das macht. Deshalb hier mein Beispiel für dich:

Code: Alles auswählen

	// Ermittle Anzahl der Zeilen / maximale anzahl der spalten
	char c = 0;
	j = 0;
	while ((c = fgetc(f)) != EOF)
	{
		// zeile
		if (c=='\n')
		{
			j = 0;
			zeile++;
		}

		if (j > spalte)
		{
			spalte = j;
		}
		j++;
	}
	fseek(f,0,SEEK_SET);	// Setze filepointer auf begin

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 14.11.2009 08:38:53

schorsch_76 hat geschrieben: Zeile 10

Code: Alles auswählen

   char **matrix;
entfernt die erste Warnung (main.c:35: warning: assignment from incompatible pointer type)
Ok, habe ich hoffentlich verstanden. Da ich in den Zeilen der Matrix die Werte als String bzw. Characters speichern möchte, muss ich auch ein char und kein int angeben.
schorsch_76 hat geschrieben: Zeile 43

Code: Alles auswählen

matrix[i]=(char*)fgets(puffer, BUF, f);
entfernt die zweite Warnung (main.c:43: warning: assignment makes integer from pointer without a cast))
Hier gilt das Gleiche. Ich gebe an die Zeile der Matrix alle Werte per Referenz auf ein char Array zurück.


schorsch_76 hat geschrieben:
Kleine Frage für dich zum Nachdenken: Was machst du wenn eine Zeile mehr als 255 Zeichen hat? Tipp: realloc


Hier ein Code: http://nopaste.debianforum.de/31491

So weit bin ich in dem Programm wohl noch nicht.
Der Rest will noch nicht so...

schorsch_76 hat geschrieben:
EDIT:
Zeile 28: matrix=(char**)malloc(zeile * sizeof(int *));
Wie viele Zeilen willst du den reservieren? Hier ist zeile noch 0. Oder schlimmer: Irgendein grosser Wert. Initialisiere immer erst deine Variablen.

Kannst du mir diese Zeile mal erklären?
(Vorallem, warum ich char** schreiben muss. Danke.

schorsch_76 hat geschrieben:
EDIT2:
Vermutlich bist du beim ermitteln der Zeilen/Spalten etwas unsicher gewesen oder weist nicht wie man das macht. Deshalb hier mein Beispiel für dich:

Code: Alles auswählen

	// Ermittle Anzahl der Zeilen / maximale anzahl der spalten
	char c = 0;
	j = 0;
	while ((c = fgetc(f)) != EOF)
	{
		// zeile
		if (c=='\n')
		{
			j = 0;
			zeile++;
		}

		if (j > spalte)
		{
			spalte = j;
		}
		j++;
	}
	fseek(f,0,SEEK_SET);	// Setze filepointer auf begin
Dass mit den Zeilen verstehe ich noch.
Aber wie meinst du das mit den Spalten?
Die Spalten sollen doch als char Array gespeichert werden, oder zähle ich so die Anzahl der Elemente und muss im Array noch das abschließende Terminierungszeichen '\0' anhängen?


Sorry für die vielen Fragen, aber habe noch nicht so ganz den Durchblick!
Hoffe, dass dies bald kommt...
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Meillo » 14.11.2009 09:21:53

Duff hat geschrieben:
schorsch_76 hat geschrieben: Zeile 28: matrix=(char**)malloc(zeile * sizeof(int *));
Kannst du mir diese Zeile mal erklären?
(Vorallem, warum ich char** schreiben muss. Danke.
char** entspricht char[][].

Aber in C castet man die Rückgabe von malloc() üblicherweise nicht -- im Gegensatz zu C++.
Die Spalten sollen doch als char Array gespeichert werden [...]
Üblicherweise nimmt man ein Array von Zeilen, bei dem jede Zeile ein Array von char ist. Also anders rum wie du es hier siehst.

Sorry für die vielen Fragen, aber habe noch nicht so ganz den Durchblick!
Siehst du, das meinte ich mit der Komplexität dieses Ansatzes. Warum das Programm nicht *erst* zeilenbasierend programmieren (dann brauchst du nämlich nur ein Array, für die eine Zeile). Wenn das läuft und verstanden ist, dann kannst du *immer noch* die kompliziertere Version mit dem 2D-Array angehen.

Vom Leichten zum Schweren ... wie immer beim Lernen/Üben/Trainieren.
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: C - Zeilenanfang einer Datei bestimmen

Beitrag von Duff » 14.11.2009 09:40:13

Meillo hat geschrieben: Üblicherweise nimmt man ein Array von Zeilen, bei dem jede Zeile ein Array von char ist. Also anders rum wie du es hier siehst.
So meinte ich es. Hatte mich falsch ausgedrückt.
Meillo hat geschrieben: Siehst du, das meinte ich mit der Komplexität dieses Ansatzes. Warum das Programm nicht *erst* zeilenbasierend programmieren (dann brauchst du nämlich nur ein Array, für die eine Zeile).
Meinst du mit zeilenbasiert folgendes:
Eine Zeile einlesen, ausgeben und anschließend die nächste Zeile einlesen?
Oh, yeah!

Antworten