C Tastatureingabe in Datei ablegen ( bis Enter gedrückt wird)

Status
Für weitere Antworten geschlossen.

elektro2

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

Ich wollte, bevor ich mein altes Projekt fortsetze, vorerst mehr über die Grundlagen der Dateiverarbeitung in C lernen.

Im Internet habe ich eine Aufgabe gefunden, bei der man die Tastatureingabe in der datei testoutput.txt ablegen soll.

Wenn man das Programm erneut öffnet, soll der Inhalt nicht gelöscht werden, sondern man soll die nächste Tastatureingabe hinten anhängen können.

Ich bin mir nicht sicher, ob ich dafür vielleicht fprintf ()benutzen soll, oder sowas wie fgetc()
Habt ihr eine Idee?

Mein Lösungsvorschlag.

Code:
#include <stdio.h>

int main(void)
{

    FILE *f;
    f=fopen("testoutput.txt","w");
    if(f==NULL)
        printf("Fehler beim oeffnen \n");
  
    char eingabe;
   // while(eingabe!='\n')
      {}
    
    
    fclose(f);
    return 0;
}
 
http://linux.die.net/man/3/fopen

€: Da waren ja noch mehr fragen. Allgemein ist mein Tip, die Manpages zu lesen. Oder sonstige Dokumentationsquellen, die deine Entwicklungsumgebung zur Verfügung stellt.
 
Zuletzt bearbeitet:
Hey... Ich muss nur noch das, was in array drin steht in die Datei bekommen

Code:
#include <stdio.h>

int main(void)
{
    
    FILE *f;
    f=fopen("testoutput.txt","w");
    if(f==NULL)
        printf("Fehler beim oeffnen \n");
    
    char array[100];
    int i=0;
    char eingabe;
    
    while(eingabe!='\n')
    {
        scanf("%c",&eingabe);
        array[i]=eingabe;
        i++;
        
    }
    
    
    
    fclose(f);
    return 0;
}
 
Zuletzt bearbeitet:
Du machst es falsch. scanf() sollte man niemals benutzen und hier wäre es nicht einmal zweckmäßig, wenn es so arbeiten würde, wie du erwartest. Du benutzt fopen() immer noch falsch, obwohl ich dir die Manpage geliefert habe. Lies die doch einfach mal!

Der Lösungsweg für dein Problem lautet:

- In einer Schleife
- Benutzereingaben Zeichenweise einlesen,
- dann das eingelesene Zeichen auf die Abbruchbedingung prüfen,
- ansonsten in die Datei schreiben.
 
Code:
#include <stdio.h>
 
int main(void)
{
    
    FILE *f;
    f=fopen("testoutput.txt","a");
    if(f==NULL)
        printf("Fehler beim oeffnen \n");
    
    
    
    
    fclose(f);
    return 0;
}
Ergänzung ()

Ich bin jetzt an dieser Stelle, aber irgendwie passiert leider nichts :/
Code:
#include <stdio.h>

int main(void)
{
    
    FILE *f;
    f=fopen("testoutput.txt","a");
    if(f==NULL)
        printf("Fehler beim oeffnen \n");
    
    char c;
    
    while(c!='\n')
    {
    c=getchar();
        putc(c,f);
        
    }
    
    
    
    
    fclose(f);
    return 0;
}
Ergänzung ()

KLAPPT ! :) Danke für deine Hilfe

Code:
#include <stdio.h>

int main(void)
{
    
    FILE *f;
    f=fopen("testoutput.txt","a");
    if(f==NULL)
        printf("Fehler beim oeffnen \n");
    
    char c;
    
    printf("zeichenkette eingeben \n");
    while(c!='\n')
    {
        
    c=getchar();
        putc(c,f);
    }
    
    
        
   
    
    
    
    
    fclose(f);
    return 0;
}
 
Du benutzt die Variable c uninitialisiert. Das kann zu überraschenden Fehlern führen. Korrigier das lieber noch und gewöhn dir an, Variablen nur dann zu verwenden, wenn sie initialisiert sind.
 
fflush(stdin); kann er auch zum löschen vom Puffer verwenden.
 
Zuletzt bearbeitet: (undeutsch)
papsti7 schrieb:
fflush(stdin); kann er auch zum löschen vom Puffer verwenden.

Wenn er Bock auf undefiniertes Verhalten hat, klar. fflush() ist für output-Streams gedacht. Wird es auf input-Streams angewendet, hängt der Effekt vom jeweiligen Compiler / OS ab.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben