Probleme in C

Technoboy

Cadet 4th Year
Registriert
Mai 2010
Beiträge
64
Guten Tag liebe Gesellen.

Vorweg ich komme aus der Javawelt habe aber früher ein wenig C gemacht.

Nun habe ich mehrere Probleme bei folgendem Code und würde gerne etwas Hilfe beanspruchen.

Code:
#import<stdio.h>

void main (String args[][])
{
    int i = 2;
    println("%d",i);
    return i;
}

Wo liegt der Fehler ich bin am Verzweifeln :( Ich habe nach mehrmaligem Überprüfen den Fehler nicht gefunden.
 
was spuckt denn der compiler aus?
bin kein c profi, aber sollte es nicht printf heißen?
edit:
so hätte ich es geschrieben:
Code:
#[B]include[/B]<stdio.h>
 
[B]int[/B] main ()
{
    int i = 2;
    print[B]f[/B]("%d",i);
    return i;
}
 
Zuletzt bearbeitet:
so:

#include <stdio.h>
int main (int argc, char** argv)
{
int i = 2;
printf("%d",i);
return i;
}
 
Code:
    #include <stdio.h>
     
    int main (int argc, char** argv)
    {
    int i = 2;
    printf("%d\n",i);
    return 0;
    }

Versuch es mal so.
Bei C heißt import include.
Ich lese das so, dass du die Variable int i ausgeben willst. Das, was du machst, ein ein formatierter Printbefehl, das wäre dann printf. Das \n ist ein Newline.

So, nach mehreren peinlichen Fehlern meinerseits müsste es jetzt stimmen :P
 
Zuletzt bearbeitet:
Grimba schrieb:
Code:
    include <stdio.h>
     
    int main (int argc, char** argv)
    {
    int i = 2;
    printf("%d\n",i);
    return 0;
    }

Versuch es mal so.
Bei C heißt import include.
Ich lese das so, dass du die Variable int i ausgeben willst. Das, was du machst, ein ein formatierter Printbefehl, das wäre dann printf. Das \n ist ein Newline.

Ach stimmt :D bin ich wohl ziemlich durcheinander gekommen. Danke
 
vergiss die raute vor dem inlcude nicht... wie ich :P
Ergänzung ()

Technoboy schrieb:
Guten Tag liebe Gesellen.

Vorweg ich komme aus der Javawelt habe aber früher ein wenig C gemacht.

Nun habe ich mehrere Probleme bei folgendem Code und würde gerne etwas Hilfe beanspruchen.

Code:
#import<stdio.h>

void main (String args[][])
{
    int i = 2;
    println("%d",i);
    return i;
}

Wo liegt der Fehler ich bin am Verzweifeln :( Ich habe nach mehrmaligem Überprüfen den Fehler nicht gefunden.

Hier noch die Fehleranalyse:

Code:
#import<stdio.h>
Code:
#include<stdio.h>
Code:
void main (String args[][])
Gleich mehrere Fehler auf einmal:
1. in C ist die main-Methode vom Typ int !
2.
Code:
(String args[][])
... dafür das C keine Strings kennt und du mal eben locker flockig ein 2 dimensionales Array dynamischer größe definieren willst.... mutig, aber öhm... siehste selber ne? :D In C sind Strings arrays vom Typ char. Arrays dynamischer größe kannst du so nicht bauen, dazu müsstest du per Hand dir ein Speichermanagement überlegen. Ist zwar nicht soo schwer, aber eben auch nicht so einfach wie du das da machen möchtest.
Von daher lautet das in C so:
Code:
int main (int argc, char** argv)
Grob erklärt: Du erhälst vom System bereits die Speicherbereiche, in denen die Argumente stehen. Von daher brauchst du nur noch Pointer, dargestellt durch das *, die darauf Zeigen, und zwar eben als 2 dimensionales Char array. Ein * für das Argument selbst, ein * für die Zeichenkette des Arguments. argc ist der Index. Er gibt Auskunft über die Anzahl der Argumente. Angefangen bei Stelle 0, dem Programmnamen bis zum letzten Argument.
Code:
println("%d",i);
Das hatten wir ja schon, in C hätte eine formatierte Ausgabe diese Form:
Code:
printf("%d\n",i)
aus dem println lese ich, dass du ein newline möchtest, also musst du das mit \n eben selbst hinzufügen.
Nunja, du musst jetzt nicht i zurückgeben. Die Konvention wäre hier, solange du nicht irgendwelche bestimmten Rückgabewerte für Errorhandling benötigst, eine 0.


Edit: Achja bedenke:
C ist nicht die wunderbare Ulitrulli-im-Bonbonland-shiny-Java-Welt, sondern n ziemlich gemeines Viech. Es tut genau das, was du ihm sagst, solange die Syntax stimmt, aber es wird dir deine Fehler nie zeigen, außer auf die harte Tour. Und da hier keine VM dir die Arbeit abnimmt, ist es essenziell wichtig, dass du dir gut überlegst, was dein C-Programm tun soll, und, dass es kompiliert und dann läuft, heißt nicht, dass es auch das tut, was du wolltest. Also schau lieber drei mal hin, schreib dir ein paar Tests.
 
Zuletzt bearbeitet:
Zurück
Oben