for



  • kann mir wer sagen was hier nicht stimmt ?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) 
    {
    int i=1;
    for (i = 1; i<5; i++ )
    {
    int LA;
    scanf("%d", LA);
    
    if(LA=2)
    {
    printf("BingBong");
    system("pause");
    }
    
    system("pause");
    
    }
    }
    


  • Du musst scanf einen Zeiger übergeben. Also nicht den Wert der Variablen sondern die Adresse.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        int i;
    
        for (i = 1; i < 5; i++)
        {
            int LA;
            scanf("%d", &LA);
    
            if (LA == 2)
            {
                printf("BingBong");
                system("pause");
            }
    
            system("pause");
        }
    }
    


  • Alles?

    Nicht eingerückt, Schleife fängt bei 1 statt "standardmäßig" bei 0 an, keine Adressübergabe bei scanf, Zuweisung in der if Anweisung statt eines Vergleiches.



  • Zu spät. 😛 (1 sek ^^)

    Aber die Zuweisung hab ich übersehen. Korrigiert.



  • Danke 🙂



  • Du könntest main auch ohne Argumente definieren: int main() { /* ... */ }

    Wie feigling angemerkt hat beginnt man normalerweise mit der 0 beim Zählen. Du musst dir also bewusst sein dass deine Schleife nur 4 mal durchlaufen wirt. Sollte sie 5 mal durchlaufen werden..

    for (int i = 0; i < 5; i++) { /* 5 mal */ }
    
    // oder
    
    for (int i = 1; i <= 5; i++) { /* 5 mal */ }
    

    Ob <stdlib.h> nötig ist weiß ich nicht mit Sicherheit, da ich auch nicht weiß ob system() dort definiert ist.

    Edit:
    (Ich hoffe die Mods bekommen nicht bei jedem edit ne Mail...)

    Und merk dir:
    einfaches '=' bedeutet Zuweisung. In deinem Code liefert LA = 2 den Wert 2 zurück. Und da if(x) für alle x != 0 wahr ist... meldet der Compiler auch keinen Fehler sodass der Block immer ausgeführt wird was offensichtlich nicht deine Absicht ist.


Anmelden zum Antworten