Fehlersuche



  • Hallo ihr!
    Ich sollte Text von der Konsole einlesen und in eine Datei speichern. Bei "<" soll der Dateiinhalt ausgegeben werden. ">" soll das Programm beenden.

    Hab nun schon einiges probiert, aber mein Code funktioniert nicht. Könnt ihr mir vl. helfen?

    #include <stdio.h>
    #include <string.h>
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    #define LINELEN 200
    
    int main() {
    	char* fpath = "./input.txt";
    
    	FILE* f;
    
    	char s [LINELEN];
    
    	f = fopen(fpath, "a+");
    
    	if (f != NULL) {
    		while (strcmp(gets(s), ">") != 0)
    			if (strcmp(s, "<") == 0) {
    				strcat(s, "\n");
    
    				while (fgets(s, LINELEN, f) != NULL)
    					cout << s << endl;
    			} else
    				fputs(s, f);
    
    		fclose(f);
    
    		remove(fpath);
    	}
    
    	return 0;
    }
    

    Vielen Dank im Vorraus



  • Das ist aber C, nicht C++.



  • Gernot123 schrieb:

    Ich sollte Text von der Konsole einlesen und in eine Datei speichern. Bei "<" soll der Dateiinhalt ausgegeben werden. ">" soll das Programm beenden.

    Das dort stehenden Programm hat mit dieser Aufgabenstellung nichts zu tun 😕



  • Klar, ich lese mit gets() von der Konsole zeilenweise. Danach prüfe ich auf die Sonderzeichen und mache das gewünschte. Warum sollte das nichts mit der Aufgabe zu tun haben?



  • 314159265358979 schrieb:

    Das ist aber C, nicht C++.

    Ich bitte um Entschuldigung dafür, dass ich ständig kurze Kommentare ablasse. Sie sind zwar inhaltlich (oftmals) richtig, aber niemals länger als 1-2 Sätze und meist auch nicht hilfreich, sondern nur herablassend.



  • Hallo! 1. Ich gebe dir vollkommen Recht (dass deine Kommentare nicht hilfreich sind). 2. "C ist auch Teil von C++", oder etwa nicht?



  • Gernot123 schrieb:

    Hallo! 1. Ich gebe dir vollkommen Recht (dass deine Kommentare nicht hilfreich sind). 2. "C ist auch Teil von C++", oder etwa nicht?

    Was er sagen will: Wenn du C verwenden willst, bist du im falschen Forum, wenn du C++ verwenden willst, solltest du auch die C++-Standard-Library verwenden.



  • Hallo wxSkip!
    Ja, is ne komische Sache, laut Angabe sollte es C++ sein, jedoch sollen wir auch puts(), fputs(), etc. verwenden... Da kann ich leider auch nichts dafür.

    PS: @314159265358979 Bist wohl ziemlich rational geworden^^



  • Gernot123 schrieb:

    2. "C ist auch Teil von C++", oder etwa nicht?

    Von den Sprachmitteln her würde ich jetzt mal ja sagen. Von der Art, Dinge zu programmieren, nein. In C++ gehört sowas mit filestreams gemacht.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du musst die Schreib-/Leseposition im FILE setzen.

    Wenn du in die Datei geschrieben hast, ist die Position am Ende der Datei.
    Wenn du jetzt lesen willst, ist da ja nichts.

    Die Funktion dafür ist fseek().



  • Vielen Dank für die Hilfe!

    LG



  • Für den konkreten Fall bietet sich eher rewind() an.


Log in to reply