in text file schreiben



  • Bei mir funktioniert folgender Code:

    int main(int argc, char* argv[])
    {
    
    	FILE     *Ptr;
    	char     Line[256];
    
    	if((Ptr=fopen("c:\\temp\\data.dat", "w"))==NULL)
    	{	puts("Konnte Datei nicht öffnen\n");
    	}
    	else
    	{	while(gets(Line));
    		{	//puts(Line);
    			fprintf(Ptr, "%s\n", Line);
    		}
    		fclose(Ptr);
    		puts("Feddisch\n");
    	}	
    
    	getch();
    	return 0;
    }
    

    Allerdings ist die Frage ob hier gets angebracht ist. Starte das Programm und gib einen Text ein. Drücke hinterher Return, dann Strg-Z und wieder Return. Das Programm sollte sich jetzt beenden und der eingegebene Text sollte in die Datei geschrieben werden.
    Lies auch mal in er Hilfe nach, was da so über gets geschrieben steht 😉



  • also langsam dreh ich durch!!! nich ma der CODE den du geschreibenhast will gehn!!
    beim comlilieren bringt der mir da fehler!!

    also ich glaub echt ich bin zu blöd!!!!

    naja mal ne kleine anmerkung: ICH ARBEITE GRAD NICH MIT DEM BUILDER!!!!
    MCHT DAS WAS??? Eigentlich doch nich, oder?????

    SEF



  • Eigentlich sollte das nix ausmachen. Was für Fehlermeldungen kommen denn, vielleicht ein Include vergessen ?



  • Peter schrieb:

    vielleicht ein Include vergessen ?

    mit sicherheit hat er das.



  • gut also comilieren lassen hat es sich jetzt!! aber es sieht genauso aus wie vorhin!!
    Ich kann zwar schreiben aber der speicher des nich ab!!!! der beendet auch das pro nich wenn ich die die tasten drücke!!

    SEF



  • mein ihr damit vieleicht

    #include <conio.h>??????

    des is drinn!!!!

    SEF



  • Was hast Du denn für ein OS ? Ich hab das gerade mit W2K getestet.



  • Das hab ch schon oben geschreiben!!!

    Aber egal:

    Red Hat 8.0

    ich arbeite NICHt mit dem Builder!!!!!

    Sondern mit:

    KDevelop!!!!!!

    Liegt das vieleicht daran???????

    SEF



  • Naja gut ich bin hier Grad auf arbeit und vieleicht hat mein Chef bei dem sch***
    Editor was nich richtig eingestellt!!
    Zuhause arbeite ich mit dem Builder, da probiere ich das dann nochmal!!

    SEF



  • Das hab ch schon oben geschreiben!

    Ahja ? Dann hab ich entweder Tomaten auf den Augen oder das Board hat diese Stelle verschluckt 😉

    Schmeiss doch probehalber mal das ganze **gets-**Geraffel raus und schrieb nen konstanten Text mit fprintf. Wenn das auch auch nicht geht hat vielleicht der Teufel seine Hand im Spiel 😃 Nee, mal im Ernst, keine Ahnung was dann noch nicht stimmt. Das Zielverzeichniss gibt es aber, inkl. den entsprechenden Rechten, oder ?



  • SEF schrieb:

    ich arbeite NICHt mit dem Builder!!!!!

    ...warum sagst du das nicht gleich? Was machst du denn hier in diesem Forum`? Ich schiebe mal nach mmmh, ANSI C

    ->Verschoben



  • Das Betriebssystem wurde bereits genannt und zwar LINUX!

    Das Problem liegt daran, dass zwar die Daten, die du eingiebst gespeichert werden, aber leider hald nur im Buffer! Erst durch fclose() wird das ganze auch physikalisch auf die Platte geschrieben. Das kann man übrigens auch mit einem flush gewirken, wie eigentlich schon beschrieben wurde.

    Meine Empfehlung ist, dass du das Programm normal beenden lässt (nicht durch X!). Am besten mit einer entsprechenden Bedingung in der Schleife. So z. B.

    #include <stdio.h> 
    
    main() 
    { 
      FILE     *Ptr; 
      char     Line[256]; 
      /* ...    Open a file for output. */ 
      Ptr = fopen("/daten/testdata/t3", "w"); 
    
      while(gets(Line)&&strcmp(Line, "EXIT ")) /* Get data from stdin */ 
      { 
        fprintf(Ptr, "%s\n", Line);    /* Send data to file.  */ 
      } 
    
      fclose(Ptr); 
    }
    

    @all
    IST EUCH EIGENTLICH NOCH GAR NICHT AUFGEFALLEN, DASS DA HINTER DEM WHILE EIN ; STEHT?!?!? 🙄 Wie soll das denn funktionieren???



  • mmmhh... ja ich arbeite hier bei mir auf der Arbeit halt LEIDER nicht mit dem Builder!!!

    Und stimmt scho das ich dann hier nix verlohren habe!!

    Naja ich hab nu ne andre ( teil ) Lösung gefunden!!

    der schreib mir jetzt was in die Datei aber nur das erste Zeichen von meiner Eingabe!!

    #include <stdio.h>
    
    main()
    {
    
      FILE     *Ptr;
    
      char     Line;
    
      Ptr = fopen("/daten/testdata/t3", "r+w");
    
        scanf("%c", & Line);
        fprintf(Ptr, "%c" , Line);
    
      fclose(Ptr);
    }
    

Anmelden zum Antworten