Hey, ich habe eine Frage.
Kann man mit C scanf eingaben in einer txt speichern?
Wenn ja wie?
Kann man mit C scanf eingaben in einer txt speichern?
Wenn ja wie?
Da sind 2 Sachen falsch ( also was mir aufgefallen is )Quote:
r - Datei nur zum Lesen öffnen (READ)Code:// String mit 30 Zeichen char Array[30]; // Pointer auf File FILE *TxtFile; TxtFile= fopen("C:\\TxtFile.txt","w+"); // Zu dem w+ weiter unten die Erklärung // String einlesen fgets(Array, 30, stdin); // Es würde auch so gehen: printf("Bitte gebe deinen Text ein:"); scanf("%s", &Array); // Nachteil gegenüber fgets, es überprüft nicht ob du über // das Array hinaus gehst. Ausserdem setzt fgets an das Ende // einen \n // 1. File, 2. Datentyp(oder auch gleich den String), 3. Variable fprintf(TxtFile, "%s", Array); // Jetzt wird es im File gespeichert // Überprüfung ob das File überhaupt vorhanden ist if(TxtFile == NULL) { //... Datei nicht vorhanden } // Datenströme wieder schliessen. fclose(TxtFile );
w - Datei nur zum Schreiben öffnen (WRITE), löscht den Inhalt der Datei, wenn sie bereits existiert
a - Daten an das Ende der Datei anhängen (APPEND), die Datei wird nötigenfalls angelegt
r+ - Datei zum Lesen und Schreiben öffnen, die Datei muss bereits existieren
w+ - Datei zum Lesen und Schreiben öffnen, die Datei wird nötigenfalls angelegt
a+ - Datei zum Lesen und Schreiben öffnen, um Daten an das Ende der Datei anzuhängen, die Datei wird nötigenfalls angelegt
Nein, da es eben kein Pointer ist, geht das ganze gut. Wäre es einer, würdest du die Adresse des Pointers übergeben und nicht der Zeichenkette und damit in den Pointer schreiben lassen.Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt. Der Compiler beschwert sich bei keiner der beiden. Aber du hast Recht da ein Array in C ein Pointer ist könnte man das & weglassen.
Nein, dafür ist der 2. Parameter da.Quote:
2. Bei fgets wird ein \0 hinten angefügt, weil sonst die Kette unendlich weitergeht und Speicher braucht bis zum abwinken.
Quote:
Durch die Anweisung
wird dem Zeiger ptr die Adresse des Arrays element übergeben. Dies funktioniert ohne den Adressoperator, da laut ANSI C-Standard der Arrayname immer als Zeiger auf das erste Array-Element angesehen wird. Hier der Beweis und das Beispiel dazu:Code:ptr = element;
Leider sind es aber exakt solche Programmbeispiele, durch die der Eindruck entsteht, Arrays und Zeiger seien gleichwertig. Und das habe ich nie behauptet.Code:#include <stdio.h> int main() { int element[8] = {1,2,4,8,16,32,64,128}; int i; printf("*element = %d\n",*element); printf("*(element+1) = %d\n",*(element+1)); printf("*(element+3) = %d\n",*(element+3)); printf("\nJetzt alle zusammen : \n"); for(i=0; i<8; i++) printf("*(element+%d) = %d \n",i,*(element+i)); return 0; }
"quod erat demonstrandum"
lässt aber den eindruck entstehen, es sei generell egal, ob man das & zeichen benutzt oder nicht.Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt.
Hast du wohl.Quote:
Zum scanf, es ist egal ob man das & macht oder weglässt. Der Compiler beschwert sich bei keiner der beiden. Aber du hast Recht da ein Array in ANSI-C ein Pointer ist könnte man das & weglassen.