Text einlesen < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:42 Mo 26.11.2007 | Autor: | Ines27 |
Aufgabe | Eingabe besteht aus Text, der über stdin eingelesen wird. Entwerfen Sie hierfür eine Einlesefunktion, die bis EOF liest. Mittels Kommandozeilenargument wird der Pfad (absoluter Pfad inkl. Dateiname) zu einer Schrifttabelle übergeben. Diese Datei muss geöffnet und eingelesen werden. |
Ich habe schon eine Funktion, die mir bis EOF liest und den eingelesenen Text speichert. Ich weiß nur nicht genau, was damit gemeint ist, dass der Pfad mittels Kommandozeilenargument zu einer Schrifftabelle übergeben wird? Und wie öffne ich die Datei, bevor ich sie einlese? Bis jetzt sieht das ungefähr so aus: (wobei die Funktion einen int zurückgibt und einen char* übergeben kriegt. (auf buffer wurde schon vorher speicherplatz in der Gr von einem char reserviert) length ist ein int
while ((character = getchar()) != EOF)
{
buffer[length] = character;
buffer2 = realloc(buffer, sizeof(char) * (length+2));
if (buffer2 == NULL)
{
return -5; // out of memory at realloc
}
length++;
}
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:37 Di 27.11.2007 | Autor: | rainerS |
Hallo!
> Eingabe besteht aus Text, der über stdin eingelesen wird.
> Entwerfen Sie hierfür eine Einlesefunktion, die bis EOF
> liest. Mittels Kommandozeilenargument wird der Pfad
> (absoluter Pfad inkl. Dateiname) zu einer Schrifttabelle
> übergeben. Diese Datei muss geöffnet und eingelesen
> werden.
Wenn ich das richtig verstehe, werden
a) über stdin ein Text eingelesen
b) zusätzlich eine Schrifttabelle eingelesen
> Ich habe schon eine Funktion, die mir bis EOF liest und
> den eingelesenen Text speichert. Ich weiß nur nicht genau,
> was damit gemeint ist, dass der Pfad mittels
> Kommandozeilenargument zu einer Schrifftabelle übergeben
> wird?
Kommandozeilenargumente bekommt die Funktion main als Argument:
int main(int argc,char* argv[])
argc ist die Anzahl der Kommandozeilenargumente, argv ein Pointer auf char arrays mit den jeweiligen Argumenten. Das erste Array (argv[0] enthält immer den Programmnamen, das zweite (argv[1] das erste Kommandozeilenargument, usw. Du musst überprüfen
a) ob du überhaupt ein Argument hast: argc>1
b) ob es gültig ist: argv[1] testen.
> Und wie öffne ich die Datei, bevor ich sie einlese?
Zum Beispiel mit fopen.
Viele Grüße
Rainer
|
|
|
|