syntax error. Warum?

Diskutiere syntax error. Warum? im C/C++ Forum im Bereich Programmieren unter Linux/Unix; #include <stdio.h> #include <string.h> typedef struct { char riff1; char riff2; char riff3; char riff4; int dateigros; char...

  1. #1 djtraumwelt, 03.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Code:
    #include <stdio.h>
    #include <string.h>
    
     typedef struct {
      char riff1;
      char riff2;
      char riff3;
      char riff4;
      int dateigros;
      char wave1;
      char wave2;
      char wave3;
      char wave4;
      char fmt1;
      char fmt2;
      char fmt3;
      char fmt4;
      int fmtlen;
      short int fmttag;
      short int channels;
      int rate;
      int bytessec;
      short int blockalign;
      short int bits;
      char data1;
      char data2;
      char data3;
      char data4;
      int len;
     } waveheader;
    
    int main(int argc, char *argv[]) {
     short int *wavedata;
     short int *wavesinus;
     short int *waveton1;
     short int *waveton2;
     FILE *fp;
    
     makesine(wavesinus);
     fp=fopen("sine.wav","wb");
     fwrite(waveheader,1,44,fp); //hier syntax error before "waveheader"
     fwrite(wavesinus,2,2000,fp);
     fclose(fp);
    
     return 0;
    }
    
    int makesine(short int *wavesinus) {
     wavesinus=(short int *) malloc(4000);
     short int u=-125;
     short int uplus=1;
     short int y[3] = {0};
     int x=0;
     while(x < 4000) {
      y[2]+=u;
      y[1]=(y[0]+y[2]) / 2;
      wavesinus[x]=y[0];
      wavesinus[x+1]=y[0];
      wavesinus[x+2]=y[1];
      wavesinus[x+3]=y[1];
      y[0]=y[2];
      x+=4;
      u+=uplus;
      if (u==-125)
       uplus=1;
      if (u==125)
       uplus=-1;
     }
     waveheader.riff1='R'; //hier syntax error before '.'
     waveheader.riff2='I';
     waveheader.riff3='F';
     waveheader.riff4='F';
     waveheader.wave1='W';
     waveheader.wave2='A';
     waveheader.wave3='V';
     waveheader.wave4='E';
     waveheader.fmt1='f';
     waveheader.fmt2='m';
     waveheader.fmt3='t';
     waveheader.fmt4=' ';
     waveheader.fmtlen=16;
     waveheader.fmttag=1;
     waveheader.channels=2;
     waveheader.rate=44100;
     waveheader.bytessec=176400;
     waveheader.blockalign=4;
     waveheader.bits=16;
     waveheader.data1='d';
     waveheader.data2='a';
     waveheader.data3='t';
     waveheader.data4='a';
     waveheader.len=4000;
     waveheader.dateigros=waveheader.len+36;
     return 0;
    }
    
    int maketon(int power1, int power2, int power3, int power4, int power5) {
     short int laut[1000];
     int i;
     for(i=0; i < 1000; i++)
      laut[i]=7000/i;
     return 0;
    
    }
    
    zwei mal syntax error, die ich beide nicht verstehe.
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 03.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Syntax error isn Bisschen unspezifisch, oder?
    Hier mal die Ausgabe von "gcc -W -Wall test.c" (solltest du am Besten auch benutzen, damit gibts (mehr und) genauere Fehlermeldungen):
    Code:
    test.c: In function ‘main’:
    test.c:39: warning: implicit declaration of function ‘makesine’
    test.c:41: error: expected expression before ‘waveheader’
    test.c:41: error: too few arguments to function ‘fwrite’
    test.c:36: warning: unused variable ‘waveton2’
    test.c:35: warning: unused variable ‘waveton1’
    test.c:33: warning: unused variable ‘wavedata’
    test.c: At top level:
    test.c:32: warning: unused parameter ‘argc’
    test.c:32: warning: unused parameter ‘argv’
    test.c: In function ‘makesine’:
    test.c:49: warning: implicit declaration of function ‘malloc’
    test.c:49: warning: incompatible implicit declaration of built-in function ‘malloc’
    test.c:69: error: expected identifier or ‘(’ before ‘.’ token
    test.c:70: error: expected identifier or ‘(’ before ‘.’ token
    test.c:71: error: expected identifier or ‘(’ before ‘.’ token
    test.c:72: error: expected identifier or ‘(’ before ‘.’ token
    test.c:73: error: expected identifier or ‘(’ before ‘.’ token
    test.c:74: error: expected identifier or ‘(’ before ‘.’ token
    test.c:75: error: expected identifier or ‘(’ before ‘.’ token
    test.c:76: error: expected identifier or ‘(’ before ‘.’ token
    test.c:77: error: expected identifier or ‘(’ before ‘.’ token
    test.c:78: error: expected identifier or ‘(’ before ‘.’ token
    test.c:79: error: expected identifier or ‘(’ before ‘.’ token
    test.c:80: error: expected identifier or ‘(’ before ‘.’ token
    test.c:81: error: expected identifier or ‘(’ before ‘.’ token
    test.c:82: error: expected identifier or ‘(’ before ‘.’ token
    test.c:83: error: expected identifier or ‘(’ before ‘.’ token
    test.c:84: error: expected identifier or ‘(’ before ‘.’ token
    test.c:85: error: expected identifier or ‘(’ before ‘.’ token
    test.c:86: error: expected identifier or ‘(’ before ‘.’ token
    test.c:87: error: expected identifier or ‘(’ before ‘.’ token
    test.c:88: error: expected identifier or ‘(’ before ‘.’ token
    test.c:89: error: expected identifier or ‘(’ before ‘.’ token
    test.c:90: error: expected identifier or ‘(’ before ‘.’ token
    test.c:91: error: expected identifier or ‘(’ before ‘.’ token
    test.c:92: error: expected identifier or ‘(’ before ‘.’ token
    test.c:93: error: expected identifier or ‘(’ before ‘.’ token
    test.c: At top level:
    test.c:97: warning: unused parameter ‘power1’
    test.c:97: warning: unused parameter ‘power2’
    test.c:97: warning: unused parameter ‘power3’
    test.c:97: warning: unused parameter ‘power4’
    test.c:97: warning: unused parameter ‘power5’
     
  4. #3 djtraumwelt, 03.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    ich verstehs immer noch nicht
     
  5. #4 Gott_in_schwarz, 03.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Du kannst ja auch afaik nicht dem Prototyp der struct Werte zuweisen. Instanzier mal ne Variable des Typs waveheader und mach da dann die Zuweisungen.
    Kenn mich aber selber auch nicht so sehr in c aus.
     
  6. #5 der_Kay, 03.10.2008
    Zuletzt bearbeitet: 04.10.2008
    der_Kay

    der_Kay Doppel-As

    Dabei seit:
    28.02.2006
    Beiträge:
    140
    Zustimmungen:
    0
    Das ist das eine Problem, das andere ist ein zu kleines malloc. Und soll das in "maketon" wirklich Integerarithmetik sein?

    PHP:
    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>

    typedef struct _waveheader {

        
    char riff [4];
        
    int dateigros;
        
    char wave [4];
        
    char fmt [4];
        
    int fmtlen;
        
    short int fmttag;
        
    short int channels;
        
    int rate;
        
    int bytessec;
        
    short int blockalign;
        
    short int bits;
        
    char data [4];
        
    int len;
     } 
    waveheader;

    int makesine(short int *wavesinus) {
        
    // aufpassen hier
        
    wavesinus=(short int *) malloc(4000 sizeof(short));
        
    short int u=-125;
        
    short int uplus=1;
        
    short int y[3] = {0};
        
    int x=0;    

        while(
    4000) {
            
    y[2]+=u;
            
    y[1]=(y[0]+y[2]) / 2;
            
    wavesinus[x]=y[0];
            
    wavesinus[x+1]=y[0];
            
    wavesinus[x+2]=y[1];
            
    wavesinus[x+3]=y[1];
            
    y[0]=y[2];
            
    x+=4;
            
    u+=uplus;

            if (
    u==-125)
                
    uplus=1;

            if (
    u==125)
                
    uplus=-1;
        }

        return 
    0;
    }

    int main(int argcchar *argv[]) {
        
    short int *wavedata;
        
    short int *wavesinus;
        
    short int *waveton1;
        
    short int *waveton2;

        
    waveheader whdr;

        
    whdr.riff [0] = 'R';
        
    whdr.riff [1] = 'I';
        
    whdr.riff [2] = 'F';
        
    whdr.riff [3] = 'F';

        
    whdr.wave [0] = 'W';
        
    whdr.wave [1] = 'A';
        
    whdr.wave [2] = 'V';
        
    whdr.wave [3] = 'E';

        
    whdr.fmt [0] = 'f';
        
    whdr.fmt [1] = 'm';
        
    whdr.fmt [2] = 't';
        
    whdr.fmt [3] = ' ';

        
    whdr.fmtlen=16;
        
    whdr.fmttag=1;
        
    whdr.channels=2;
        
    whdr.rate=44100;
        
    whdr.bytessec=176400;
        
    whdr.blockalign=4;
        
    whdr.bits=16;

        
    whdr.data [0] = 'd';
        
    whdr.data [1] = 'a';
        
    whdr.data [2] = 't';
        
    whdr.data [3] = 'a';

        
    whdr.len=4000;
        
    whdr.dateigros=whdr.len+36;

        
    FILE *fp;

        
    makesine(wavesinus);
        
    fp=fopen("sine.wav","wb");

        
    fwrite(&whdr,1,44,fp);
        
    fwrite(wavesinus,2,2000,fp);
        
    fclose(fp);

        return 
    0;
    }

    int maketon (int power1int power2int power3int power4int power5) {
        
    short int laut[1000];
        
    int i;

        for(
    i=01000i++)
            
    laut[i]=7000/i;

        return 
    0;
    }

     
  7. #6 djtraumwelt, 03.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    OK, vielen dank, jetzt versteh ichs. Und funktionieren tuts auch =)
     
Thema:

syntax error. Warum?

Die Seite wird geladen...

syntax error. Warum? - Ähnliche Themen

  1. syntax error near unexpected token `&'

    syntax error near unexpected token `&': Hallo Ich habe ein Scrip angepasst bzw. erweiter und habe nun an einer Stelle ein Problem. Vor der erweiterung ist es einwandfrei...
  2. Bilfe bei 1064 - You have an error in your SQL syntax; check the manuel that correspo

    Bilfe bei 1064 - You have an error in your SQL syntax; check the manuel that correspo: Hallo habe ein Kleines Problem kann mir einer helfen so bald ich ein volle rechte geben will mach er das da er ja in EVENT und TRIGGER nichts...
  3. syntax error near unexpected token

    syntax error near unexpected token: Hi ich hab ein kleines problem mit einem bash scritp :-( auf der einen maschine läuft es fehlerfrei ~> bash --version GNU bash, version...
  4. Problem: syntax error near unexpected token `done'

    Problem: syntax error near unexpected token `done': hi leute, hab beim folgenden code probleme!! #!/bin/bash lauf=0 ende=5 while [ $lauf -le $ende ] do find / -atime -6 lauf= expr $lauf+1...
  5. syntax error bei *.sh

    syntax error bei *.sh: hallo ich wollte gerade ein programm von cd-rom installieren und setup.sh mit "sh setup.sh" ausführen, da bekam ich folgende fehlermeldung:...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden