Fehler



  • Ich hab mal wieder ein neues Problem....

    Eigentlich ist dieser Quellcode, den ich jetzt gleich posten werde richtig, aber trotzdem gibt es einen Fehler beim Compilieren:

    // Das Programm soll alle Kommentare aus C-Programmen löschen. Dabei ist zu beachten, dass Zeichenketten in Doppelanführungszeichen und Zeichenkonstanten in einfachen Anführungszeichen korrekt behandelt werden müssen //
    
    #include <stdio.h>
    
    void rcomment(int c);
    void in_comment(void);
    void echo_quote(int c);
    
    /* alle Kommentare aus korrektem C-Programm entfernen */
     main()
    {
    int c;
    while ((c = getchar()) != EOF)
    rcomment(c);
    return 0;
    }
    
    /* rcomment: Jedes Zeichen lesen, Kommentare entfernen */
    void rcomment(int c)
    {
    int d;
    if (c == '/')
    if ((d = getchar()) == '*')
    in_comment();
    else if (d == '/')
    {
    putchar(c);
    rcomment(d);
    }
    else
    {
    putchar(c);
    putchar(d);
    } 
    if (c == '/' || c == '"')
    echo_quote(c);
    else
    putchar(c);
    }
    
    /* incomment: in gültigem Kommentar */
    void in_comment(void)
    {
    int c, d;
    c = getchar();
    d = getchar();
    while (c != '*' || d != '/')
    {
    c = d;
    d = getchar();
    }
    }
    
    /* echo_quote: ' oder " Folge ausgeben */
    void echo_quote(int c)
    {
    int d;
    putchar(c);
    {
    while((d == getchar())!= c)
    putchar(d);
    if(d == '\')
    putchar(getchar());
    }
    putchar(d);
    }
    


  • Anmerkungen zu deinen Code:

    1. Benutze int main(), einfach main() ist nicht richtig.
    2. Lerne deinen Code einzurücken, das wird nicht nur uns helfen, sondern dir Hilfe von uns zu bekommen, denn keiner mag Spaghetti sehen. Und wenn der Code eingerückt ist, ist er lesbar und man kann die Sachen schneller sehen.
    3. Mach die Kommentare nicht so lang bzw. nicht alles in der selben Zeile. Dsfür gibt es

    /* das ist ein sehr laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanges Kommentar, dass
         man in mehrern Zeilen lesen kann, somit hat man am Board keine lange
         große Scrollbalken */
    


  • // Jedes Zeichen aus s1 entfernen, das in der Zeichenkette s2 vorkommt //
    #include <stdio.h>
    
    void squeeze(char s1[], char s2[], int c);
    
    int main()
    {
     char Eingabe; // Eingabe wird als "char" definiert //
      Eingabe = getchar(); // Damit wird der Wert, den man eingibt eingelesen //
      squeeze; // Initialisierung der Umkehrungsfunktion //
       printf("%d %s\n", squeeze, squeeze);
    }
    
    void squeeze(char s1[], char s2[], int c)
    {
     int i, j, k; // Variablen mit Integertypen //
    
      for (i = k = 0; s1[i] != '\0'; i++)
      {
       for (j = 0; s2[i] != '\0' && s2[i] != s1[i]; j++)
       ;
      if(s2[i] == '\0')
       s1[k++] = s1[i];
       }
        s1[k] = '\0';
        }
    

    Eine andere Sache ist noch diese. Was muss ich definieren, damit ich die Zeichenkette ausgeben kann.


Anmelden zum Antworten