c programmieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 30.08.2004 14:09:25

Hi mohameth,

wenn du erst dabei bist, programmieren zu lernen, würde ich dir empfehlen nicht mit C/C++ anzufangen. Wie du selber schreibst, ist in C/C++ sehr viel erlaubt und viele Fehler führen dann zu einem Speicherzugriffs- oder ähnlichem Fehler, der oft auch mit Debugger schwer zu finden ist. Ich würde Dir empfehlen erst mal eine Scriptsprache wie Python oder Ruby anzuschauen.
Bei Python kannst Du kleine Sachen einfach in der Pythonconsole ausprobieren. Da Einrückungen zur Syntax gehören gewöhnst Du Dir schon einen besseren Stil zu programmieren an. Du ersparst Dir auch das Compilieren und Linken, ein Pythonscript kannst Du gleich in der Console starten. So kannst Du dich mehr auf die Grundlagen der Programmierung konzentrieren und langsam begreifen was Variablen, Kontrollstrukturen usw. sind. Wenn Du später dann auch zusätzlich C lernst, kannst Du das Wissen schon Einsetzen und tust Dir viel leichter beim lernen.


Gruß

Dookie

Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

Beitrag von fabske » 30.08.2004 21:43:09

danke an alle erstmal.
bert: was ich nicht verstehe ist: "int main(int argc, char *argv[])"
sorry aber ich fange gerade erst an, ich hab kein plan was du damit meinst.
sprichst du damit die ersten 3 zeilen meiner quellcodes an?
ansonsten vielen dank für die tipps, werd ich befolgen.

wenn ich eine schleife machen will die eben keine initialisierung und/oder keinen test hat, was soll ich dann bitte da rein schreiben außer nichts?
->

Code: Alles auswählen

 for( ; ;inkrement) 
danke für deinen gut gemeinten rat dookie, aber ich will nun c lernen. ich hab nun angefangen und ich zieh es durch. ich hab in der schule schon assembler gelernt, hab also schon einen groben überblick über konzepte und realisierungen.
c is einfach meine lieblingssprache (auch wenn ich sie noch gar net richtig kenn *g+), ich habs mir einfach in den kopf gesetzt, schon vor 3 jahren, und so lange hab ich das buch nun schon.

ps: wenn ich mal groß bin will ich kernel programmierer werden :)
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 30.08.2004 22:11:21

na da hast du dir aber was vorgenommen...

also das mit der ersten Zeile
"int main( int argc, char *argv[])"

nehmen wir an, du hast ein Proggy geschrieben, welches "ausgabe" heißt..

dann kannst du ja "Optionen" übergeben

z.B.

# ausgabe "dies ist ein test"

dann würdest du in "int argc" die Anzahl an Optionen die übergeben worden sind stehen haben (bin mir nicht sicher ob der Befehl mitgezählt wird, also das 0 = ausgabe ist)

ich nehm jetzt einfach mal an, dass unter "0" der Befehl selber steht...

dann könntest du per:

printf("%s",argv[0]);

einfach mal "ausgabe" ausgeben... denn "argv" ist ein Zeiger auf char Arrays

also

argv[0] hat als Wert die Speicheradresse im Arbeitsspeicher, in dem "ausgabe" steht und
argv[1] hat als Wert die Speicheradresse im Arbeitsspeicher, in dem "dies ist ein test" steht
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 30.08.2004 22:13:54

@mohammet: Es gibt ja nicht nur for schleifen ;-)
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 31.08.2004 16:52:44

Bert hat geschrieben:@mohammet: Es gibt ja nicht nur for schleifen ;-)
for ist übrigens (in C/C++) nur eine andere Schreibweise für while:

Code: Alles auswählen


for ( A ; B ; C ) {
    D;
}

// ist identisch mit

A;
while (B) {
    D;
    C;
}
Anstatt for(;;inkrement) ist also besser,
while(1) { .....; inkrement } zu schreiben; oder noch besser: while(bedingung){...} oder do {...} while (bedingung)
Zuletzt geändert von Joghurt am 31.08.2004 18:23:56, insgesamt 1-mal geändert.

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 31.08.2004 17:57:59

Joghurt hat geschrieben:
Bert hat geschrieben:@mohammet: Es gibt ja nicht nur for schleifen ;-)
for ist übrigens (in C/C++) nur eine andere Schreibweise für while:

Code: Alles auswählen


for ( A ; B ; C ) {
    D;
}

// ist identisch mit

A;
while (B) {
    D;
    C;
}
for(;;inkrement) ist also besser als
while(1) { .....; inkrement } zu schreiben; oder noch besser: while(bedingung){...} oder do {...} while (bedingung)
Du meinst schon, dass die while-Konstrukte besser sind, oder? Im Moment kann man dein Statment leider aus beiden Richtungen lesen ;-)

Grüße, Marco

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 31.08.2004 18:25:11

emge hat geschrieben:Du meinst schon, dass die while-Konstrukte besser sind, oder? Im Moment kann man dein Statment leider aus beiden Richtungen lesen ;-)
Huch, schon wieder eine Mehrdeutigkeit in der deutschen Sprache... Ja, du hast es schon richtig verstanden. Habe den Post geändert.

Ich glaube, ich sollte anfangen, für Politiker Reden zu schreiben.

Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

Beitrag von fabske » 12.09.2004 22:32:57

hallo. ich hab nun neuinstalliert und meine ordner mit den bisherigen c programmen einfach kopiert.
wenn ich nun eines meiner bereits geschrieben programme mit dem gcc übersetzen lassen will kommt bei jedem die gleiche meldung:

Code: Alles auswählen

mohameth@uoi-01:/mnt/dateien.uoi-01/mohameth/c-programmierung$ gcc addition.c
addition.c:1:20: stdio.h: Datei oder Verzeichnis nicht gefunden
addition.c:2:21: stdlib.h: Datei oder Verzeichnis nicht gefunden
das mit stdio und stdlib kenn ich noch net. im buch steht ich soll es einfach an anfang schreiben und fertig. das wird erst noch behandelt. ?
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?

fluid
Beiträge: 494
Registriert: 14.11.2003 21:52:49

Beitrag von fluid » 12.09.2004 22:51:38

Probier' mal

Code: Alles auswählen

apt-get install libc6-dev

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Beitrag von weedy » 17.09.2004 22:34:11

Joghurt hat geschrieben:Die for-schleife ist übrigens schlechter Stil, besser wäre:

Code: Alles auswählen

for( c=0,steine=0 ; c-h > 0 ; c++)
Das ist auch so ziemlich die einzige sinnvolle Anwendung des Komma-Operators...
Das stimmt nicht, es gibt auch eine andere:
Zusammenfassen von Funktionen:

Code: Alles auswählen

if( 1) printf( "Hallo"), printf( " Welt\n");
if( 0) printf( "printet"), printf( " nicht\n");
weedy.

Antworten