Wo ist der Fehler?

01/25/2012 18:24 C or C++#1
Hey Epvp

Ich lerne grad C und ich würde mal gerne wissen warum das Programm abstürzt ist von meinem Buch als Übung!

Code:
#include <stdio.h>
#include <windows.h>

int main() {
    FILE *f;
    char file_name[255];
    char name[20], v_name[20], ort[20], strasse[20];
    
    printf("Wie soll die Datei heissen : ");
    scanf("%c",&file_name);
    
    f = fopen(file_name, "w");
    if(f == NULL) {
            printf("Konnte Datei nicht öffnen\n");
            exit(0);
            }
            
    printf("Vorname : \n");
    fgets(name, sizeof(name), stdin);
    printf("Nachname : \n");
    fgets(v_name, sizeof(v_name) , stdin);
    printf("Ort : \n");
    fgets(ort, sizeof(ort), stdin);
    printf("Strasse : \n");
    fgets(strasse, sizeof(strasse), stdin);
    
    fputs(name, f);
    fputs(v_name, f);
    fputs(ort, f);
    fputs(strasse, f);
    
    flose(f);
            
    return 0;
    
}
Habe es schon als Admin gestartet und es will einfach die Datei nicht schreiben!

Da wo wie soll die Datei heissen steht muss der Pfad und der Name als *.txt stehen Bsp: "c:\projekte\adressen.txt". Habe es auch von der Konsole aus geöffnet

Danke im vorraus
01/25/2012 19:18 Nightblizard#2
Das scanf ist falsch.
%c ließt nur einen Buchstaben aus den Eingabestream. %s ist die richtige Wahl.

Des weiteren sind die Funktionen scanf und fopen deprecated und sollte nicht mehr genutzt werden. scanf_s und fopen_s sollten genutzt werden.
Und nach dem scanf musst du den Eingabepuffer flushen, da sonst die Eingabe des Vornamens übersprungen wird.