Schreiben in Datei
-
Hi,
hab ich natürlich ganz vergessen
Die Fehlermeldungen sind folgende:15 c:\writed~1.c
warning: assignment makes pointer from integer without a cast
16 c:\writed~1.c
warning: passing arg 1 offputs' from incompatible pointer type 16 c:\\writed~1.c warning: passing arg 2 of
fputs' from incompatible pointer typeLeider versteh ich das mit den Zeigern auch noch nicht so ganz, warum muss z.B.
auf fopen() ein Zeiger zeigen, warum kann ich nicht einfach ne Integer Variable deklarieren und mit der dann öffnen?Ich hab lange Zeit in php programmiert, da is das n bissl einfacher
gruß
gemuse
-
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 andersrumjetzt bekomm ich nur noch eine Compiler-Warnung:
15 c:\writed~1.c
warning: assignment makes pointer from integer without a castwas 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ß
gemuseCode:
#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