Schreiben in Datei



  • fputs(ptr, text);
    

    dreh die parameter mal um 🙂



  • ptr=fopen(dateiname, "a") != NULL
    das sieht der compiler als
    ptr=(fopen(dateiname, "a") != NULL)

    faellt dir etwas auf?



  • oh 🙂
    das wusste ich net, in PHP ists z.B. grad andersrum 🙂

    jetzt bekomm ich nur noch eine Compiler-Warnung:

    15 c:\writed~1.c
    warning: assignment makes pointer from integer without a cast

    was könnte das sein?

    btw, kennt ihr vielleicht irgendne gescheite Funktionsreferenz mit den wichtigsten C-Funktionen/Libraries und Erklärungen?

    gemuse



  • @gemuse
    siehe Post von Shade Of Mine



  • ok, ich hab den Code nun verändert, nur hab ich ein Problem:

    mit dem Modus "a" müsste er doch, falls die Datei noch nicht existiert, sie erstellen, tut er aber nicht.

    hab den Code auch mit dem Modus "w" gemacht und eine bereits existierende Datei verwendet, er schreibt einfach nicht in die Datei...

    woran könnte das liegen?

    gemuse

    aktueller Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main() {
        char dateiname[80], text[100];
        FILE *ptr;
    
        printf("In welche Datei wollen Sie schreiben? ");
        gets(dateiname);
        printf("\nWas wollen Sie in die Datei schreiben? ");
        gets(text);
        printf("\n\n");
    
        ptr=fopen(dateiname, "w");
        if(ptr != NULL) {
               fputs(text, ptr);
        } else {
          printf("Fehler beim Oeffnen der Datei...\n\n");
        }
    
        fclose(ptr);
    
        system("PAUSE");
    }
    


  • Von wo aus rufst du dein Programm denn auf? Hast du schon mal versucht einen absoluten Pfad anzugeben?



  • ok, mit absoluten Pfadangaben funktionierts, danke!
    Aber wenn die .exe Datei im gleichen Verzeichnis ist wie die .txt, in die ich schreiben will und ich nur ne relative Pfadangabe mach, d.h. nur den Dateinamen der .txt Datei angeb, warum geht das dann nicht so?

    gemuse



  • @gemuse
    Weil jedes Laufwerk in Windows einen sog. aktuellen Pfad hat. Und der aktuelle Pfad wird immer bei relativen Pfadangaben verwendet. Darum die Frage, von wo aus du das Programm aufrufst. Wenn du z. B. das Programm vom Desktop aus aufrufst (per Verknüpfung), dann wird die Datei am Desktop erstellt.

    Wenn du die Eingabeaufforderung startest und erst in den Pfad gehst, wo dein Programm liegt und dann es aufrufst, funktioniert es auch.



  • So, nun hab ich n anderes Problem, diesmal will ich aus einer Datei lesen 🙂

    zwei Fragen zu folgendem Programmcode:

    1. ich brauch ein array vom Typ char, aber ich weiß nicht genau wieviel Werte es späte enthalten wird, da ich ja nicht weiß, wieviel Zeichen in der Datei stehen, was kann man da machen? ich wollte einfach das array so deinieren: char text[];

    aber da bekomm ich ne Compiler-Fehlermeldung: array size missing
    gibts da ne andere Lösung?

    2.in Zeile 20 soll bei dem Code ein "parse error before ']'" sein... Leider kann ich da keinen Fehler erkennen... plz help 🙂

    gruß
    gemuse

    Code:

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    int main() {
        FILE *fp;
        char dateiname[80], text[];
    
        printf("Welche Datei moechtest du lesen? ");
        gets(dateiname);
        printf("\n\n");
    
        if((fp = fopen(dateiname,"r")) == NULL){
              printf("Fehler beim oeffnen");
              getch();
              exit(1);
        }
    
        while(!feof(fp)) {
              text[] = fgets(fp);
        }
    
        printf("%s", text);
    
        getch();
        return 0;
    }
    


  • char text[];

    geht nicht, da du angeben musst welche groesse text denn haben soll.

    du musst einen zeiger verwenden
    char* text;

    und dann mittels malloc() die richtige groesse reservieren (free() dann aber nicht vergessen)

    btw:
    text[] = fgets(fp);
    wir sind hier nicht in PHP 😉


Anmelden zum Antworten