Fehler in C-Tutorial Quellcode?

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
ProgBeginner
Beiträge: 76
Registriert: Mo Jul 29, 2013 2:26 pm

Fehler in C-Tutorial Quellcode?

Beitrag von ProgBeginner » Do Okt 30, 2014 5:14 pm

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.
Verwechsle niemals Freie Software mit Freeware - da gibt es markante Unterschiede. Freie Software kann Geld kosten, Freeware ist aber selten frei.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Fehler in C-Tutorial Quellcode?

Beitrag von cloidnerux » Do Okt 30, 2014 6:54 pm

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?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Fehler in C-Tutorial Quellcode?

Beitrag von oenone » Do Okt 30, 2014 6:56 pm

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.

ProgBeginner
Beiträge: 76
Registriert: Mo Jul 29, 2013 2:26 pm

Re: Fehler in C-Tutorial Quellcode?

Beitrag von ProgBeginner » Do Okt 30, 2014 9:34 pm

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.
Zuletzt geändert von ProgBeginner am Do Okt 30, 2014 9:47 pm, insgesamt 1-mal geändert.
Verwechsle niemals Freie Software mit Freeware - da gibt es markante Unterschiede. Freie Software kann Geld kosten, Freeware ist aber selten frei.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Fehler in C-Tutorial Quellcode?

Beitrag von cloidnerux » Do Okt 30, 2014 9:44 pm

Du hast zwar den Quellcode kopiert, aber nicht vollständig ;)
Da fehlt noch ein "}" nach

Code: Alles auswählen

  return EXIT_SUCCESS;
Redundanz macht wiederholen unnötig.
quod erat expectandum

ProgBeginner
Beiträge: 76
Registriert: Mo Jul 29, 2013 2:26 pm

Re: Fehler in C-Tutorial Quellcode?

Beitrag von ProgBeginner » Do Okt 30, 2014 9:59 pm

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 ;)
Verwechsle niemals Freie Software mit Freeware - da gibt es markante Unterschiede. Freie Software kann Geld kosten, Freeware ist aber selten frei.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Fehler in C-Tutorial Quellcode?

Beitrag von cloidnerux » Do Okt 30, 2014 10:07 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten