Supportnet Computer
Planet of Tech

Supportnet / Forum / WindowsXP

c-programmierung???????





Frage

hallo, wer kann mir helfen?? ich beginne gerade mich mit c-programmierung zu beschäftigen (mit einem schweren dicken buch) und habe als betriebssystem winxp. als ich den code unter win95 compiliert habe, hat mir die dos-eingabeaufforderung das zurückgegeben was im buch stand, hat also prima funktioniert. jetzt bekomme ich nur noch zahlen und buchstaben angezeigt, mit denen ich nichts anfangen kann (ich schätze mal irgendwelchen hex-code). was mache ich falsch oder was habe ich vielleicht vergessen? danke im voraus :-) gruß susi_xx

Antwort 1 von alfredo7

Man benötigt einen C-Compiler der das Betriebssystem
auch unterstützt. MS-DOS ist seit WIN2000 nur noch emuliert.

C ist im übrigen eine harte Nummer für einen Anfänger
und wenn man praktisch damit arbeiten will, für einen
Einzelkämpfer eine Lebensaufgabe. Das Buch von
Charles Petzold gibt z.B. einen guten Einblick was einen
erwartet.

Gruss Alfred

Antwort 2 von susi_xx

den c-compiler habe ich ja, der war auf der cd die im Buch dabei war. und laut anleitung im buch brauchte ich nur die daten auf festplatte kopieren, dann ein paar pfadangaben in einer bat-datei einzutragen und fertig. wie gesagt, mit win95 hat das auch super funktioniert, aber mit xp - ich weis gar nicht was da auf dem bildschirm als ausgabe eigentlich erscheint.

das buch was ich hier habe heißt übrigens "das c-grundlagen buch" und ist von gerhard willms und ich finde echt gut beschrieben alles, auch mit schönen beispielen - nur laufen müßten sie halt :-((

gruß susi_xx

Antwort 3 von alfredo7

Hallo Susi,

vermute, dass es sich noch um einen Win16 Compiler handelt

Gib unter Google C-Compiler Freeware ein und nimm dann
Robsite-C/C++ und dann den Digtial Mars Compiler.

Hello world hat bei mir auf Anhieb auf Win98 und WIN2000 funktioniert. Habe leider kein XP um es auszuprobieren.

Gruß Alfred

Antwort 4 von susi_xx

danke erst einmal!

wenn du den compiler 8.45 gemeint hast, den habe ich gefunden --> probier das ganze jetzt mal aus und du bekommst auch dazu noch feedback ;-)

ach ja, der bisherige c-compiler (ich hab mal nachgesehen) war von symantec und für win95 gemacht. ich dachte immer compiler ist compiler. ist wohl nicht so??

bis dahin, susi_xx

Antwort 5 von Das_Urmel

Mitnichten ist das egal.
Wenn der auch noch aus der gelben Schmiede stammen sollte, dann ist ja wohl klar warum nix geht.

mfg
Michael Bormann

Antwort 6 von susi_xx

und warum ist das nicht egal?

und was ist eine gelbe schmiede?

ich hab davon leider (noch) keine ahnung, hoffe aber, das ändert sich in den nächsten jahren.

danke aber trotzdem für die info.

s.

Antwort 7 von susi_xx

@alfredo7

habe jetzt mal den compiler entpackt, aber irgendwie komme ich damit nicht klar. in der einen readme stand doch geschrieben, ich brauche keine anpassungen am system vornehmen; scheint aber nicht so zu sein, denn der ausgabetext ist immer noch alles andere als verständlich.

muss ich da vielleicht doch noch etwas einstellen oder installieren?

Antwort 8 von alfredo7

Hallo Susi,

#include <stdio.h>

int main(void)
{
printf("Hello World\n");
return 0;
}

Dieses Programm funktioniert bei mir in der DOS-Eingabeaufforderung. Im Verzeichnis \dm\bin
dmc hello eingeben. In der Readme steht für XP
[Start] [Command Prompt].

Gruß Alfred

Antwort 9 von alfredo7

Hallo Susi,

welchen Editor verwendest du denn?

Gruß Alfred

Antwort 10 von niemand

das hat mit dem editor gar nix zu tun...

am besten du nimmst eine komplette IDE, bei der der compiler und linker bereits fertig eingerichtet und konfiguriert sind

z.B.
bloodshed devc++
http://www.bloodshed.net/devcpp.html

mingw studio
http://parinyasoft.com/download.html

borland c++ builder x personal
http://www.borland.com/downloads/download_cbuilderx.html

Antwort 11 von alfredo7

Hallo niemand,

wie schaffte ich das bei Bloodshet beim Hallo World Programm das Fenster offen bleibt?

Gruß Alfred

Antwort 12 von susi_xx

also als editor verwende ich die eingabeaufforderung von windows und gebe dann dort edit ein --> blauer hintergrund und weiße schrift und ich kann die datei unter *****.c abspeichern.

übrigens das mit dem void hinten dran funktioniert auch nicht, da erscheint auch nur ein gemisch aus buchstaben und zahlen.

danke auch für die links, ich werde sie mir mal ansehen und vielleicht verstehe ich sogar etwas. tut mir auch leid für euch, dass ihr euch hier mit mir abplagen müßt, aber vielleicht wird ja mal was aus mir - denn ihr seid doch bestimmt alle aus der it-branche und genau da will ich auch mal hin ;-)

Antwort 13 von alfredo7

Hallo Susi,

der Tipp von "niemand" ist sehr gut. Hab mir den bloodsheet geholt. Läuft einwandfrei.

Für Windows muß das dann so lauten:

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

return 0 ;
}

Gruß Alfred

Antwort 14 von niemand

ich habe dev-c++ momentan nicht installiert, aber ich glaube, die Zeile
system("PAUSE"); 
vor dem return sollte das fenster offen halten..
ansonsten kann muß man das kompilierte programm mit der eingabeaufforderung starten.

Antwort 15 von alfredo7

@niemand
Habe unter examples ein Beispiel gefunden, dass mein
Problem löst.

@susi
bei bloodsheet
- unter examples die console-Lösung.
- unter Wintest die Windows-Lösung

Gruß Alfred

Antwort 16 von susi_xx

danke noch mal für die tipps und für eure hilfe + geduld. werde euch sicherlich in den nächsten tagen noch des öfteren nerven :-)

das mit dem bloodsheet werde ich mal ausprobieren, aber das sieht alles so übelst kompliziert aus - ist das eigentlich noch c-programmierung oder schon wieder was anderes?

so jetzt muss ich leider aufhören sonst gibt´s noch zoff.

wünsch euch was, danke und bis demnächst!!!!

;-)

Antwort 17 von alfredo7

Hallo Niemand,

welchen C-Compiler vewenden denn sie?

Gruß Alfred

Antwort 18 von niemand

@alfredo7
den borland c++ builder x (dritter link in antwort 10). nicht daß ich auch nur annähernd alle funktionen bräuchte, aber gut zu wissen, daß man könnte wenn man wollen würde.

@susi_xx
dev-c++ ist recht simpel, man kann projekte anlegen und so eine bessere verwaltung der eigenen programme erreichen. der code, den alfredo7 in antwort 13 gepostet hat, ruft eine funktion für die graphische darstellung unter windows auf. zum einstieg ist das unnötig. wenn man jedoch das eigene programm in bloodshed dev-c unter winxp ausführt, öffnet sich die console und schließt sich sofort wieder, nachdem die ausgabe erfolgt ist. dieses verhalten kann man aber wie in antwort 14 beschrieben, vermeiden.

Antwort 19 von alfredo7

Hallo Susi,

darf dich an meine erste Antwort erinnern.

Das Problem ist, das C weit vor Windows entstanden ist und
damals eben die console das Maß der Dinge war. Das Buch
von Petzold(5.Auflage) umfaßt z.B. 1349 Seiten.

Wenn du das consolen-Bespiel verwendest, kannst du
die Windowsproblematik zunächst ausblenden.

C hat noch einige unangenehme Eigenschaften.
Die ganze Stringverwaltung nervt ungemein.
Programmieranfänger verzweifeln an der Zeigerproblematik.
Deshalb ist z.B. C++ entstanden.

Gruß Alfred

Antwort 20 von susi_xx

hallöchen zusammen, ich bin auch wieder da und sogar sehr fröhlich, denn es hat einiges funktioniert. dank euch nochmal!

der tip mit dem buch war auch ganz toll - ist zwar etwas mächtig, aber für gut 30€ kann man sich sowas ja zum nächsten (noch zwei wochen) gebutstag schenekn lassen :-) ich habe aber mal unter buecher.de etwas drin gelesen und denke mir, es ist ganz gut geschrieben und auch gut erklärt. der petzold soll ja einer der berühmtesten programmierer sein ....

aber was noch nicht so richtig funktioniert, ist da offenbleiben des dos-fensters, muss ich also noch ein bissi tüffteln, schließlich kann ich euch ja nicht mit jeder kleinigkeit nerven.

also danke und man liest sicherlich voneinander, susi.

Antwort 21 von alfredo7

Hallo Susi,

wenn du unter examples\Hello\ das 1. Beispiel nimmst,

dann bleibt das DOS Fenster bis zum q offen.

Gruß Alfred

Antwort 22 von susi_xx

hi,

und danke für den tipp.

aber welches examples\Hello\ das 1. Beispiel meinst du eigentlich? ich scheine hier wohl total auf dem schlauch zu stehen. auf das buch bezogen, das habe ich noch gar nicht - mit ein bissi glück in zwei wochen zum geburtstag :-))

lg susi

Antwort 23 von alfredo7

Hallo Susi,

Im Verzeichnis des bloodsheet Compilers.

Zum Petzold noch folgender Hinweis:
Ich will nicht an deinem Geburtstag gesteinigt werden.
Er gilt als der Guru. Der Haken an dem Buch ist jedoch,
dass die Beispiele lt. einem Kritiker nur unter NT richtig
laufen. Für WIN98 sind nur funktionsfähige exe dabei.
Somit für den der etwas lernen will natürlich Müll.

Gruß Alfred

Antwort 24 von susi_xx

ah ja, ich habe mir das beispiel mal angesehen, aber das ist ja in c++ geschrieben, davon null schimmer, weil ich es erst einmal mit c versuchen möchte.
ich habe da jetzt folgenden code, entsprechend buch geschrieben:

#include<stdio.h>
main()
{
printf("Das ist ein C-Programm!");
}

das ist das allererste beispiel in meinem buch. das compilieren klappt ganz gut und in der eingabeaufforderung steht sogar der richtige ausgabetext. nur wenn ich die exe selbst doppelt anklicke, dann geht das fenster auf und sofort wieder zu. kann man das nicht ändern oder muss das so sein??

ach ja, gesteinigt wird keiner und die mafia werde ich auch nicht auf den weg schicken und noch kann ich´s mir mit dem buch noch überlegen --> hast du vielleicht einen guten vorschlag - kann auch ruhig etwas kompliziert sein, schließlich will ich ja was lernen (und in der not habe ich ja euch :-))

Antwort 25 von alfredo7

Hallo Susi,

bin gesten an dem selben Punkt hängen geblieben.
Der Vorschlag von niemand funktioniert noch nicht.
Fehlt wohl noch eine include-Datei. Werde mich rühren
wenn ich eine Lösung habe. Bin heute im Stress.
Bin morgen wieder greifbar.

Gruß Alfred

Antwort 26 von Gladiator

Hallo,

um die Fensterschließproblematik zu lösen:
Es gibt da einen einfachen Trick, einfach auf eine Eingabe warten.

z.B.
#include<stdio.h>
main()
{
char c;
printf("Das ist ein C-Programm!");
getchar( c );
}

getchar wartet auf die Eingabe eines Zeichens.
In diesem Fall bleibt dann das Fenster auf bis das Zeichen eingegeben wurde.

Ein hilfreichreich Link zur C und C++ Programmierung ist übrigens:
http://www.cplusplus.com/ref/

Antwort 27 von niemand

ok ich habs

um die zeile
system("PAUSE");  

verwenden zu können, muß man mit
#include <stdlib.h>

noch eine inkludierung machen.

damit bleibt das fenster offen und man kann es mit jeder taste (nicht nur enter) schließen, wenn man mit anschauen fertig ist

Antwort 28 von Das_Urmel

Es genügt nicht, die stdio.h einzubinden, die passende Runtimelibrary gehört dazu.
Welche bei deinem Compiler für die Consolenanwendung zuständig ist, solltest du entweder aus der stdio.h (include Datei) erfahren, oder aus einer beiliegenden Readme.xx.

Es ist ein gravierender Unterschied, ein Programm für die Console (aka DOS ) zu kompilieren, oder das grafische Interface.
Jeweils die richtige Library - die vorherigen Poster mit dem Compiler mögen da mal aushelfen und eventuell die make-datei - den Inhalt posten.

mfg
Michael Bormann

Antwort 29 von alfredo7

so funktioniert es:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
printf("Hello World\n");
system("PAUSE");
return 0;
}

Gruß Alfred

Antwort 30 von alfredo7

Sorry aber warum mein vorheriges Postiing so verstümmelt
ist weis ich nicht

nochmals:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[ ])

{
printf("Hello World\n");
system("PAUSE");
return 0;
}

Antwort 31 von susi_xx

hallo und guten morgen!

bevor dann wieder fleißig gelernt wird, hab ich schon mal wieder hier reingeschnuppert.

also erst mal danke, denn das mit dem getchar und der <stdlib.h> waren echt gute vorschläge und sie funktionieren sogar, auch bei mir - da geht der tag doch gleich viel besser los und hoffentlich auch weiter.

wünsch euch auch viel spaß und tschüß bis dahin!

lg susi