Seite 1 von 1

Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 5:14 pm
von ProgBeginner
Hallo ;)

Im Kapitel "Dateien" des C-Tuts scheint sich im Beispielcode zur Binärdateierstellung ein Fehler eingeschlichen zu haben - oder habe ich eventuell die falsche Compilerversion?

Wenn ich diese binwrite.c kompilieren möchte, meldet mir der Compiler :
binwrite.c: In function ‘main’:
binwrite.c:82:3: error: expected declaration or statement at end of input


Meine GCC-Version :
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Den Quellcode vom Tut habe ich 1:1 so übernommen, ich habe eigenhändig keine Änderungen vorgenommen.

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 6:54 pm
von cloidnerux
Im Kapitel "Dateien" des C-Tuts scheint sich im Beispielcode zur Binärdateierstellung ein Fehler eingeschlichen zu haben - oder habe ich eventuell die falsche Compilerversion?
Auf welches Beispiel beziehst du dich?

Die beiden letzteren aus dem Artikel compilieren(Win7 x64, gcc 4.8.1) bei mir Problemlos.

Hast du vlt beim kopieren irgendeinen Zeilenumbruch erwischt?
Was steht bei dir in Zeile 82?

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 6:56 pm
von oenone
Da musst du irgendwie etwas unvollständig kopiert oder zuviel kopiert haben.

Welches der vielen Listings hast du genommen? Vom Dateinamen scheint es binwrite zu sein. Bei mir funktioniert es problemlos.

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 9:34 pm
von ProgBeginner
Meine komplette main-Funktion aus dem binwrite.c schaut folgendermaßen aus:

Code: Alles auswählen

int main( void )
{
  FILE * file = fopen( "datei.bin", "w+b" );
 
  if( file )
  {
    struct Header header;
 
    /* zu schreibende Daten vorbereiten */
 
    struct Segment  segment1   =   {  0,  0, 10,  0 };
    struct Segment  segments[] = { { 10,  0, 10, 10 },
                                   { 10, 10,  0,  0 } };
 
    struct Triangle triangle   =   { 20,  0, 30, 0, 30, 10 };
 
    /* Header vorbereiten */
 
    strcpy( header.id, "proggen.org binfile" /* 17 Bytes + 1 Nullbyte */ );
    header.objects = 4;
 
    /* Header schreiben */
 
    fwrite( &header, sizeof( struct Header ), 1, file );
 
    /* Daten schreiben */
 
    writeSegment ( file, &segment1, 1 );  /* einzelnes Segment */
    writeTriangle( file, &triangle, 1 );  /* einzelnes Dreieck */
    writeSegment ( file, segments, 2 );  /* Datenarray schreiben */
 
    /* Datei schließen */
 
    fclose( file );
  }
 
  return EXIT_SUCCESS;
Zeile 82 ( laut gEdit ) :

Code: Alles auswählen

  return EXIT_SUCCESS;
Mit dem kompletten Quellcode meiner binwrite.c hab ich mal nopaste.info behelligt

// EDIT.C sagt:

Ich glaube, ich hab den Fehler gefunden. Nach dem return EXIT_SUCCESS fehlte noch eine geschweifte ... das ist es ;)

sry - ich seh manchmal auch den Wald vor Bäumen nicht.

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 9:44 pm
von cloidnerux
Du hast zwar den Quellcode kopiert, aber nicht vollständig ;)
Da fehlt noch ein "}" nach

Code: Alles auswählen

  return EXIT_SUCCESS;

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 9:59 pm
von ProgBeginner
Da hat sich deine Antwort damit überschnitten, dass ich den selbigen Fehler auch schon gefunden habe :D

Ich seh manchmal den Wald vor Bäumen net - sorry ;)

Re: Fehler in C-Tutorial Quellcode?

Verfasst: Do Okt 30, 2014 10:07 pm
von cloidnerux
Da hat sich deine Antwort damit überschnitten, dass ich den selbigen Fehler auch schon gefunden habe :D
Es ist immer besser, selber die Fehler zu finden. Daraus lernt man mehr.