Anzeige:
Ergebnis 1 bis 5 von 5

Thema: problem beim einlesen von daten aus einem stream

  1. #1
    quallensteak
    Gast

    problem beim einlesen von daten aus einem stream

    hallo,
    ich hab hier nen filestream, aus welchem per getc() so viele zeichen eingelesen werden sollen, bis ein . (punkt) im stream erscheint:
    int x=0;
    for (x=0; headline[x] != '.'; x++) headline[x]=getc(filestream);
    nur ungeklaerter weise haengt sich das programm bei dieser operation auf
    die loesung sollte am besten in ansi-c ein, hab keine lust auf cpp umzusteigen ;>
    gruss
    Quallensteak

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Naja, du solltest halt wirklich gucken dass du nicht übers Arrayende hinausläufst.

    Ausserdem scheint mir du checkst headline[x] != '.'; schon bevor headline[x] überhaupt gefüllt wurde?

    Besser irgendwie sowas:
    Code:
    for (x=0; x < sizeof(headline) && (headline[x] = getc(filestream)) != '.'; x++);
    MfG Peschmä
    Geändert von peschmae (24-09-2005 um 18:55 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    quallensteak
    Gast
    ay superb, das verlegen des checkpoints auf nach-dem-getc() hat super geklappt, danke!

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.07.2005
    Beiträge
    8
    Zitat Zitat von peschmae
    Naja, du solltest halt wirklich gucken dass du nicht übers Arrayende hinausläufst.

    Ausserdem scheint mir du checkst headline[x] != '.'; schon bevor headline[x] überhaupt gefüllt wurde?

    Besser irgendwie sowas:
    Code:
    for (x=0; x < sizeof(headline) && (headline[x] = getc(filestream)) != '.'; x++);
    MfG Peschmä
    Mit sizeof auf Pointer muss man aufpassen. Wenn das ganze in eine Funktion ausgelagert wird und headline als Parameter übergeben wird, kennt sizeof die "wahre" Größe nicht und gibt immer 4, also sizeof(char *) zurück.

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Da da nix stand nahm ich mal an dass das kein Pointer ist. Wenn das einer ist hast du natürlich recht
    War auch mehr als ein "hier_bitte_die_grösse_einfüllen" gedacht

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •