Generelle Fragen zu C
-
Was genau meinst du mit "Klasse richtig erzeugen" ? Meinst du damit eine Instanz, also ein Objekt, einer Klasse erzeugen ?
Das geht einfach so:
Klasse variable;
variable ist ein Objekt des Klasse Klassenname.
Was beudetet das Schlüsselwort property ? Ist mir jedenfalls nicht bekannt.
Und die deklaration der Variablen ist mir auch unklar, wenn das char Arrays sein sollen, werden das normal so gemacht:[cpp]class String
{
private:public:
char Text[1000]; //char Arrays mit der Größe 1000
char read[1000];
char write[1000];int Length()
{
int Count;
//Allgorithmus zum zählen der verwendeten Zeichen...
return Count;
}}; // ; fehlt am Ende der Klasse [/cpp]
-
Sry cpp Tag wollte iregendwie nicht funktionieren.
Und
variable ist ein Objekt des Klasse Klassenname.
sollte eigentlich: ""variable" ist ein Objekt der Klasse "Klasse"" heißen.
Etwas blöd formuliert ^^
-
Durch propertys kann man quasi Ereignisse festlegen, die geschehen sollen, wenn in die Variable hineingeschrieben bzw. wenn Daten aus dieser herausgelesen werden (bei read tu dies, bei write tu das). So könnte man zum Beispiel die Stringlänge gleich berechnen lassen, sowie sich der Inhalt des Texts ändert.
Das ist der wesentliche Unterschied zu gewöhnlichen Variablen, zumindest soweit mir bekannt. Wenn ich "property" in C schreibe, wird dieses blau formatiert. Es scheint also ansich auch in C (oder nur C++?) zu existieren.Nungut, ich habe die Klasse soweit abgeändert:
class String { private: public: char Text[1000]; int length() { int Count=0; while (Text[Count] != 0) { ++Count; } return Count; } };
Ergänzungsfrage wäre nun: Wie lege ich eine Variable der erstellten Klasse "String" fest?
Edt: Frage hat sich erledigt. ^^ Hatte mich verschrieben und nun läuft alles soweit.
printf("Der String %s besteht aus %i Zeichen.\n",test.Text,test.Length()); spuckt mir jetzt die Stringlänge aus. ^^Danke bis hierhin.
Wie sieht es denn nun mit der Try Anweisung aus bitte?
Edit2: Wenn ich mit "int X;" ne Variable festlege und in diese erst zur Laufzeit einen Wert schreiben will, meckert er jedes mal, dass die Variable nicht initialisiter wurde. Was muss ich denn mit ner Variable anstellen, damit sie "initialisiert" wird?
PS: Mit "richtig" erzeugen meinte ich so, dass das Programm startet.
-
Es gibt in C keine Klassen, erst in C++.
Ich weiß zwar nicht, wo du property, read und write her hast, aber das gibt es weder in C noch in C++.
Es wäre wohl angebracht, erst einmal ein Buch durchzuarbeiten, dann dürften sich die meisten Fragen von selbst klären. Exceptions erzeugt man mit throw (z.B. throw int(5); bzw. throw 5; ). Auch die gibt es nur in C++, du bist also im falschen Forum bzw. lernst die falsche Sprache.
-
Oder ich nutz einfach das falsche Prog?
Inner Uni haben die uns Visual C++ ans Herz gelegt, um C (nicht C++!) zu lernen. C++ nehmen wir Maschinenbauer eigentlich nicht durch, ich wills mir zu gegebener Zeit allerdings selbst aneignen.
Da das Prog ohne zu meckern Class, Try und Co angenommen hat, bin ich einfach mal davon ausgegangen, dass das zu C gehört. Sogar im uralt Pascal gab es zumindest schon type und classes (type scheint nichtmal C++ zu kennen??? Oder ich hab noch nich rausgefunden wie...)!!
Dann weiß ich jetzt wenigstens, was ich inner Prüfung alles nicht verwenden sollte.
-
GR-Thunderstorm schrieb:
Da das Prog ohne zu meckern Class, Try und Co angenommen hat, bin ich einfach mal davon ausgegangen, dass das zu C gehört.
Du bist natürlich auch davon ausgegangen, dass das, was Visual C++ annimmt, C ist. Wie sinnig
C und C++ sind übrigens keine Programme, sondern Sprachen, die irgendwo mehr oder weniger formal definiert sind. Im Zweifelsfall steht in der Sprachbeschreibung, was geht und was nicht.
Sogar im uralt Pascal gab es zumindest schon type und classes
Scherzkeks. Pascal und C sind in etwa gleich alt, aber Pascal-Versionen, in denen es Klassen gibt, sind deutlich jünger (1990?) als C++ (1984 bzw., wenn man C with classes dazurechnet, 1979.)
(type scheint nichtmal C++ zu kennen??? Oder ich hab noch nich rausgefunden wie...)!!
Vielleicht suchst du
typedef
. Man braucht das in C aber auch nicht so oft wie in Pascal, da man in C mit unbenannten Typen arbeiten kann.
-
Nanyuki schrieb:
Ich weiß zwar nicht, wo du property, read und write her hast, aber das gibt es weder in C noch in C++.
'property' gibt's, glaub ich in C#. er sagte ja dass er mit visual studio rumfummelt und da hat er sich wohl einen wilden mix aus C#, c++ und C gebaut.
-
Jetzt aber ne Frage zum wirklichen "C":
Wie kann ich zwei Zeichenketten vergleichen?
#include <stdio.h> #include <stdlib.h> #pragma warning(error: 4669) typedef char string[1000]; const string Gold="Gold"; string Kork="Kork"; int main() { int Kante; string Material; printf("Kantenlänge?\n"); scanf("%i",&Kante); printf("Material?\n"); scanf("%s",&Material); if ((Material == Gold) || (Material == Kork)) { printf("Material als %s erkannt.",Material); } return 0; }
Irgendwie will das aber nicht so recht funktionieren. Wenn ich "Gold" eingebe, geht er hinterher ans Programmende.
-
GR-Thunderstorm schrieb:
Jetzt aber ne Frage zum wirklichen "C":
Wie kann ich zwei Zeichenketten vergleichen?
Mit strcmp.
-
Mit man: strcmp.
Ich geb dir aber einen Tipp: Wenn du C lernen willst, dann "vergiss" dabei erst einmal dein Delphi-Wissen. C kannst du nicht exakt wie Delphi programmieren und wenn du es versuchst, dann endest du bei ineffizienten oder schwachsinnigen Konstrukten, wie dein string-typedef.