Öffnen und schließen einer Datei, sowie Anzeigen
-
Hallo,
Ich habe leider ein kleines Problem und zwar üben wir momentan den Umgang mit öffnen und schließen von Dateien. nun habe ich folgende Aufgabe bekommen.
Ich soll in der Anwendung unter C++ ein Programm schreiben das seinen eigenen Quellcode anzeigt.FILE*in;
char buff[300], temp[300];
strcpy(buff,Edit1->Text.c_str());
in=fopen(buff, "rt");
while(NULL!=in)
{
fgets(temp,strlen(???),in);
Memo1->Lines->Add(temp);
fclose(in);
}Nun habe ich hier das problem das ich nicht weis was in die ?? rein sollte. denn ich müsste ja auf die Datei bzw. die erste Zeile verweisen, leider weiß ich nicht wie
-
Wenn man schon den C++Builder hat, dann sollte man auch seine Klassen konsequent nutzen. Das Datei-Handling ist mit TFileStream wesentlich einfacher! Auf dein Problem bezogen:
TFileStream *f = new TFileStream("Unit1.cpp",fmOpenRead); char *c = new char[f->Size+1]; f->Read(c,f->Size); c[f->Size] = '\0'; Memo1->Text = c; delete c; //k.A. ob sich das mit TMemo verträgt delete f;
Gruß
Markus
-
Ja, aber wir müssen in C programmieren leider
-
Oh man, war das ein Kampf, aber immerhin eine Lösung habe ich, allerdings völlig ohne Gewähr:
FILE *stream; char msg[500]; //sollte für eine Zeile reichen stream = fopen("Unit1.cpp", "r"); fseek(stream, 0, SEEK_SET); while(fgets(msg, 500, stream)!=NULL) { int l = strlen(msg); msg[l-1] = '\0'; // \n Korrektur von fgets Memo1->Lines->Add(msg); } fclose(stream);
Das mit der Zeilenlänge ist zwar nicht sauber gelöst, aber bei einer guten Lösung muss man es vermutlich häppchenweise einlesen. k.A. ob es auch einfacher geht.
-
Hallo
Wenn du schon weist das du in C programmieren must warum postest du dann im Builder-Forum?
bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
in C?
das:
Memo1->Lines->Add(temp);
ist jedenfalls KEIN C, sondern C++ aus der VCL
-
#include <stdlib.h> #include <stdio.h> int main( ) { FILE *input = fopen( __FILE__, "r" ); if( !input ) { fprintf( stderr, "Datei \"%s\" konnte nicht zum lesen geöffnet werden!\n", __FILE__ ); return EXIT_FAILURE; } while( !feof( input ) ) { putc( fgetc( input ), stdout ); } putc( '\n', stdout ); fclose( input ); }
greetz, Swordfish