ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
2013
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Stefanseiner ist offline Grünschnabel
    Registriert seit
    Oct 2007
    Beiträge
    1
    Hi auch

    Kann mir bitte jemand erklären wie fscanf in C genau funktioiert wenn ich beispielsweise folgendeTextdatei einlesen möchte:

    22.12.7882
    12.23.4534
    23.09.1993
    23.12.2000
    Es soll ein Programm realisiert werden welches aus einer Eingabe-Textdatei (s.o.) eine Ausgabetextdatei erzeugt wo alle "." ersetzt werden durch ":" und dabei fscanf benutzt wird.

    Mein Ansatz bisher:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>


    int copyDates(FILE *fin, FILE *fout)
    {
    int i=0;
    char *c;

    c=(char*)malloc(11*sizeof(char));


    while(fscanf(fin,"%s",c) != EOF)
    {

    if(c[i]=='.')
    {
    fprintf(fout,"%c",':');
    }

    else
    {
    fprintf(fout,"%s",c);
    i++;
    }
    }

    free(c);
    return i;
    }


    int main(void)
    {
    FILE *filein=NULL,*fileout=NULL;
    int noDates;
    char outputName[]="ausgabe.txt";

    filein = fopen("eingabe.txt","r");
    fileout = fopen("ausgabe.txt", "w");

    noDates = copyDates(filein,fileout);
    printf("Datei %s enthaelt %d Daten\n",outputName,noDates);

    fclose(filein);
    fclose(fileout);

    system("PAUSE");
    return 0;
    }
    Genau an der fscanf-Zeile schmiert die Anwendung ohne Fehlermeldung ab.

    Ich hoffe ihr könnt mir weiterhelfen
     

  2. #2
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    Hi.

    Ich kann das von dir beschriebene Problem nicht nachvollziehen. Für die Eingabedatei die du angegeben hast läuft das Programm einwandfrei durch.

    Allerdings hast du nicht geprüft ob die Dateien überhaupt geöffnet werden konnten.

    Und es würde sich anbieten, wenn du schon mit fscanf arbeitest, gleich das Format der Eingabe zu nutzen und fscanf die Arbeit machen zu lassen, anstatt danach noch selber den String zu verarbeiten.
    Code c:
    1
    2
    3
    4
    5
    
    int v1, v2, v3;
     
    while (fscanf(fin, "%2d.%2d.%4d", &v1, &v2, &v3) == 3) {
      ...
    }

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Thema nicht erledigt

Ähnliche Themen

  1. Problem mit fscanf
    Von Lex83 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 27.05.07, 19:30
  2. Fehler mit fscanf()
    Von PuMi2006 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 03.09.06, 10:46
  3. insertBefore (DOM) wie funktioniert es genau?
    Von alloisxp im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 08.08.06, 17:02
  4. wie funktioniert das SIP-Protokoll genau
    Von apfelgriepsch im Forum Internet, DSL & Flatrate
    Antworten: 2
    Letzter Beitrag: 09.10.04, 23:24
  5. fscanf probleme
    Von Slazer im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 30.08.04, 11:46