Woodstock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 Hi, also ich bin soweit, das ich im Grunde alles was ich an eine weitere Funktion an Vaiablen, Arrays usw. als Parameter übergeben kann, und zwar 'per referenz'. Das einzige wo ich noch ein Problem habe, ist folgendes: ich habe dieses definiert: FILE *fz; Wie muss ich das einer weiteren Funktion Übergeben (wie deffinieren bzw. deklarieren, und wie aufrufen)? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ketzer Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 Moin, ich denke mal wie jede Variable auch: void dateiverarbeitung(FILE *); dateiverarbeitung(fz); /*der Aufruf bei deinem Bsp*/ void dateiverarbeitung(FILE *datei) { /*source*/} Ich hoffe mal das stimmt so...ich muß das auch jedesmal wieder neu ausprobieren (darfür geht es aber jedesmal schneller ) Greetz Ketzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Hmm, klappt so nicht. Also, bei mein char Array 'Datei' (zwei dimensional) mache ich das so: Definition/Deklaration (je nachdem mit ';' oder ohne): void Ueberpruefung(char Datei[][???]) Aufruf: Ueberpruefung(Datei); mein eindimesionales Array 'Eingabe' so: Definition/Deklaration (je nachdem mit ';' oder ohne): void Ueberpruefung(char *Eingabe) Aufruf: Ueberpruefung(Eingabe); und meine normalen Varibalen so: Definition/Deklaration (je nachdem mit ';' oder ohne): void Ueberpruefung(char& Variablen) Aufruf: Uberpruefung(Variablen); Aber mit dem FILE (ob jetzt *fz, *a *sonstwas) klappt es nicht. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> Hi, also ich bin soweit, das ich im Grunde... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ketzer Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 Klappt so nicht? Kann gar nicht sein Was klappt denn nicht? Bekommst du ne Fehlermeldung vom Compiler oder während der Laufzeit eine Protectionexeption? Denn wenn ich mich nicht sehr irre wird ein FILE* genau wie z.B. ein long*, void* oder sonstwas* übergeben... Sag mal was nicht klappt... Greetz Ketzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Bekomme vom Linker folgende Fehlermeldung: <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> Test.obj : error LNK2001: unresolved external symbol "void __cdecl Ueberpruefung(int &,char *,char (* const)[150],int &,int &,int &,bool &,int &,int &,char (* const)[1000],char (* const)[101],struct _iobuf *,int &)" (?Ueberpruefung@@YAXAAHPADQAY0JG@ D000AA_N00QAY0DOI@DQAY0GF@DPAU_iobuf@@0@Z) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 :eek: Äääääääähhhhhhhhmmmmmmmmmmmmmm... :eek: ohne dir nahe treten zu wollen - Wenn eine Funktion mehr als vier Parameter braucht, stelle ich mir immer die Frage, obs nicht auch irgendwie anders geht... Wie schon die alten römer sagten: "Teile und herrsche". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Ich weiß nicht, die Funktion um die es mir jetzt geht, also die ich jetzt erstellt habe, da habe ich die eigentlich Überprüfung reingepackt. Klar könnte ich die auch noch wieder aufteilen, aber nur dann, wenn die dann neuen Funktionen in der Funktion 'Ueberpruefung' aufrufe. Meinst Du ich sollte bestimmte Variablen erst in der Funktion definieren? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> Meinst Du ich sollte bestimmte Variablen erst in der Funktion definieren? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Also, habe jetzt alle Variablen die ich nur in der Funktion 'Ueberpruefung' brauche dort definiert. Habe jetzt noch fünf Parameter (ging leider nicht weniger, da ich die anderen Sachen auch noch verändert in 'main' brauche. Aber die Fehlermeldung des Linkers kommt immer noch... Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Also, habe jetzt alle Variablen die ich nur in der Funktion 'Ueberpruefung' brauche dort definiert. Habe jetzt noch fünf Parameter (ging leider nicht weniger, da ich die anderen Sachen auch noch verändert in 'main' brauche. </STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Es liegt an dem 'FILE *fz', denn wenn ich das weglassen, das sagt er bloß, dass das fehlt, nehme ich das zum Testen dann einfach raus, klappt alles. Also muss es an dem 'FILE *fz' liegen. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 18. Oktober 2001 Teilen Geschrieben 18. Oktober 2001 Hast du mal probiert, ob das Prob auch isoliert auftritt, siehe Bsp. ? <FONT COLOR="#a62a2a" SIZE="1">[ 18. Oktober 2001 15:54: Beitrag 1 mal editiert, zuletzt von captain haddock ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 18. Oktober 2001 Autor Teilen Geschrieben 18. Oktober 2001 Ja, tut es leider, naja, morgen sehe ich weiter... Danke aber schon mal, vielleicht kommts morgen ja von selbst... Schönen Feierabend! Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 19. Oktober 2001 Teilen Geschrieben 19. Oktober 2001 Das ist ja sehr merkwürdig. Ich habe mal folgendes probiert: // *** pfil.cpp *** // wie ist das mit FILE* ? #include <stdio.h> // hast du dieses include? void func(FILE* fil) { int c = fgetc(fil); putchar©; } void main(void) { FILE* f; if( f = fopen("x.txt","r") ) // x.txt muß es natürlich geben { func(f); fclose(f); } } Das kompiliert bei mir sowohl unter M$, gcc wie auch borland anstandslos !?! <FONT COLOR="#a62a2a" SIZE="1">[ 19. Oktober 2001 08:53: Beitrag 1 mal editiert, zuletzt von captain haddock ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Morgen *gähn*.... Also, ich weiß nicht wieso :confused: , aber ich habe es heute morgen einfach noch einmal geschrieben (also nur die Sache mit der Parameterübergabe natürlich), und jetzt klappt es ... Thanks a lot... Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Kannst Du mir auch noch verraten wie ich das bei der Eingabe so regeln kann, das wenn ich als User keinen weiteren Suchbegriff mehr angeben will ich einfach nur <Enter> zu drücken brauche, ohne irgendwas anderes?!? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 19. Oktober 2001 Teilen Geschrieben 19. Oktober 2001 Wie wärs damit, die Schleife zum Einlesen zu verlassen, wenn der zuletzt eingegeben String leer ist ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Habe ich versucht, aber macht er so nicht, wie ich es versucht habe :confused: . Wie also muß die Bedingung aussehen? do { . . . } while(strcmp (Eingegebenes, " ??? ")); Was muss ich anstelle der Fragezeichen setzen, oder muss ich es ganz verändern? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 19. Oktober 2001 Teilen Geschrieben 19. Oktober 2001 Tja, ein trickiges Problem das damit zusammenhängt wie cin funktioniert. In der Form cin >> charbuf wird halt immer das nächste Stück zusammen hängender nicht-Leerzeiche eingelesen, kommt dieses nicht, bleibt in charbuf der alte Inhalt... Eine Lösung wäre, die gesamte Zeile einzulesen mit istream::getline. Dann wird nämlich alles eingelesen, auch wenn nichts vor <enter> kommt wird dieses nichts eingelesen. Aus diesem string kann dann, wenn er nicht leer ist, mit einem strstream gelesen werden. Oder du läßt dir die Suchbegriffe in einer Zeile geben. Probier mal dieses: #include <iostream> using namespace std; void main(void) { char buffer[30][30]; int i = 0; do { cin >> buffer[i++]; // Leerzeichen, die ggf. am Ende der Zeile stehen, entfernen, sonst evt. Problem... while( (isspace(cin.peek())) && ( cin.peek() != '\n') ) cin.get(); }while( cin.peek() != '\n' ); // Nur um zu schauen, was in buffer so drin ist: while(i) cout << buffer[--i] << endl; } (Es gibt immer noch eine andere Lösung, als man denkt ) <FONT COLOR="#a62a2a" SIZE="1">[ 19. Oktober 2001 09:53: Beitrag 1 mal editiert, zuletzt von captain haddock ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Hmm, danke für diese Idee, aber ich soll es so nicht machen (und dann kann ich nicht sagen, ich will es aber, weil es halt mein Chef ist, der Anweisungen gibt). Kannst Du das über mehrere Zeilen (also jedes Suchwort in einer neuen Zeile) auch realisieren? Ich habe es mit cin.getline probiert, aber das klappt so auch nicht, wie ich will (bekomme folgende Fehlermeldung: error C2661: 'getline' : no overloaded function takes 1 parameters ). Wie machen? Bine PS: Ich wüßte wirklich nicht, was ich im Moment ohne Dich und die anderen hier tun würde... Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 19. Oktober 2001 Teilen Geschrieben 19. Oktober 2001 Wenn ich mich erinnere, arbeitest du mit MSVC. Dann markier doch mal "getline" und drück F1. Wenn deine Firma eine anständige Installation hat, sollte die MSDN Library aufgehen, wo du dir anschauen kannst, wie z.B. getline deklariert ist (es braucht mindestens 2 Parameter ). Das heißt nicht, daß ich es dir nicht auch verraten könnte, aber es geht oft schneller <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR> istream& getline( char* pch, int nCount, char delim = '\n' ); pch : A pointer to a character array. nCount : The maximum number of characters to store, including the terminating NULL. delim : The delimiter character (defaults to newline). Remarks Extracts characters from the stream until either the delimiter delim is found, the limit nCount?1 is reached, or end of file is reached. The characters are stored in the specified array followed by a null terminator. If the delimiter is found, it is extracted but not stored. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Ja, wir haben MSDN, das hätte ich Dir aber auch vorher sagen können, sorry. Arbeite auch damit, aber hat mir dabei nicht geholfen. Ok, also getline ließt nur in Arrays, sehe ich das richtig? Weil der erste Parameter in der Klammer ein Zeiger auf eine char Array ist. Muss ich also aus meinem Buffer ein Array machen, ja? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 19. Oktober 2001 Teilen Geschrieben 19. Oktober 2001 char a[5]; char* b; char c[3][7]; Typ von a : char* Typ von b : char* Typ von c[x] : char* #define BUFFLEN 128 #define ARR 17 char buff[BUFFLEN]; char arrbuff[ARR][BUFFLEN], cin.getline(buff, BUFFLEN); for( int i = 0; i < ARR, i++) { cin.getline(arrbuff[i], BUFFLEN); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 19. Oktober 2001 Autor Teilen Geschrieben 19. Oktober 2001 Also, das er jetzt mit cin.getline einließt, klappt, aber nicht das mit der Endbedingung. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.