Fehler finden! Kann mir jemand sagen wo hier Fehler sein sollen?????



  • Helft mir bitte den Fehler zu finden! 💡

    Habe eine Datei mit dem Namen: demo_warning.c benutzt. Habe sowohl -Wall und -O6 (höchste Codeoptimierung), aber auch den Debugger gdb ausprobiert. ⚠

    Hier ist der Quellcode: 😕 👍

    // A very strange C program
    // compile with: gcc demo_warning.c
    // run: ./a.out
    // compile again: gcc -Wall demo_warning.c
    // compile again: gcc -Wall -O6 demo_warning.c
    // compile again: gcc -ansi -Wall -Werror demo_warning.c
    // gdb can help us to find the segmentation fault

    // assume we are to lazy to type this: #include <stdlib.h>

    main (int argc, char** argv) {
    int i, j, n;
    double a;

    /************* long *************/
    i = atol (argv[1]);
    printf ("parameter1 has numeric int value %d, n = %d\n", i, n);

    if (i=7)
    printf ("parameter1 is seven\n");

    /************* double float *************/
    a = atof (argv[1]);
    printf ("parameter1 has numeric value (double float) %f\n", a);
    printf ("parameter1 interpreted as int: %d\n", a);

    /************* scanf *************/
    printf ("enter a number: ");
    /* fflush (stdout);
    /* use fflush to print "enter a number: " without newline */

    scanf ("%d", j);
    printf ("j = %d\n", j);
    }



  • Kannst du dein Problem mal beschreiben und Code-Tags benutzen. Die Leute bekommen sonst eventuell Augenkrebs.

    blan



  • i sollte vom typ "long int" sein, und dann wird das mit "%ld" ausgegeben. n ist in deinem ersten printf noch nicht initialisiert und hält daher undefinierte werte.

    if(i==7) statt i=7

    wenn du schon dein double als int ausgeben willst, dann caste das doch bitte richtig.

    scanf("%d",&j) statt scanf("%d",j) da ja ein zeiger auf ein int benötigt wird...

    main() in c braucht ein return statement und damit schaut das ganze dann so aus: "int main(...)"

    gcc kannd doch maximal -O3 oder bin ich da falsch informiert???

    mehr sind mir jetzt auf die schnelle nicht aufgefallen:(

    kann mir ja nur schwer vorstellen, dass du das durch den compiler pressen konntest... 😉

    lg lolo



  • gcc -Wall -W -pedantic-errors -std=c99

    sollte dich bei allen Fehlern in dem Code warnen.

    Aber nutz Codetags und rück deinen Code richtig ein!


Anmelden zum Antworten