C Kleines C Programm, dass in einer schleife Autos in eine Datei schreiben

Status
Für weitere Antworten geschlossen.

elektro2

Cadet 4th Year
Registriert
Feb. 2014
Beiträge
67
Hallo liebe community :)

Eigentlich ein ganz einfaches Programm. Man soll immer ein Auto eingeben können, dass dann in der Datei abgelegt wird.
Danach kann man ein weiteres eingeben usw. ( bis 10 Abbruch).

Ohne die Schleife funktioniert das Programm. Das Auto wird in die Datei geschrieben.

Aber mit der Schleife wird einfach gar nichts in der Datei abgelegt.


Habt ihr eine Ahnung?

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


int main(void)
{

    FILE *fp=fopen("autosauflisten.txt", "a");
    if(fp==NULL)
        printf("Fehler beim oeffnen");
    
    char autos[40];
    for(int i=0;i<10;i++)
    {
    
    printf("auto eingeben \n");
    scanf("%s", autos);
    
    fwrite(autos, strlen(autos), 1, fp);
    
    }
    
    fclose(fp);
    return 0;
}
 
Ok, ich rede gegen die Wand. Werde halt glücklich mit deinem scanf(), Nur veröffentliche bloß niemals irgendein Programm!
 
aber ich verstehe das nicht. Ich bräuchte ja fscanf(), um ein Auto wieder aus der Datei auszulesen . Oder fread(). aber ich verstehe nicht, warum scanf
dort nicht geht. Man sagt doch immer, dass z.b gets() viel schlimmer ist.
Ergänzung ()

Dann verstehe ich nicht, warum diese Variante nicht klappt

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


int main(void)
{
    
    FILE *fp=fopen("autosauflisten.txt", "a");
    if(fp==NULL)
        printf("Fehler beim oeffnen");
    
    char autos[40];
    for(int i=0;i<10;i++)
    {
        
        printf("auto eingeben \n");
        fgets(autos,20, stdin);

        
        fwrite(autos, strlen(autos), 1, fp);
        
    }
    
    fclose(fp);
    return 0;
}
Ergänzung ()

Nun klappts :)))

Code:
#include <stdio.h>

int main(void)
{

    FILE *fp=fopen("autosschreiben","a");
    
    if(fp==NULL)
        printf("Fehler beim oeffnen");
    
    char *autos=(char *)malloc(200*sizeof(char));
    
    for(int i=0;i<5;i++)
    {
        
        printf("auto eingeben \n");
        fgets(autos, 10, stdin);
        
        fwrite(autos, strlen(autos), 1, fp);
        
        
    }
    
    fclose(fp);
    
    return 0;
}
 
asdfman schrieb:
Ok, ich rede gegen die Wand. Werde halt glücklich mit deinem scanf(), Nur veröffentliche bloß niemals irgendein Programm!

explanation-i-demand-one.jpg
 
Es ist unmöglich, scanf() sicher zu verwenden. Die Erklärung habe ich in einem der 714 anderen Threads, die OP in den letzten Tagen postete geschrieben.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben