![]() |
![]() |
|
|
|||||||
| Programmierung Rat & Tat für Programmierer |
![]() |
|
|
Themen-Optionen | Ansicht |
|
|
#21 |
|
Inventar
![]() Registriert seit: 28.08.2001
Ort: Österreich
Beiträge: 1.597
|
also dann geht jetzt alles?
gut so, also wennst mal hilfe brauchst pn oder mail an mich. have phun |
|
|
|
|
|
#22 |
|
Elite
![]() Registriert seit: 07.09.2000
Beiträge: 1.036
|
ja danke und keine angst ich werde noch ne menge threads zum c-thema aufmachen, weil manche sachen irgendwie verwirrend sind
aber es lohnt sich wirklich, hier kriegt man wenigstens plausible erklärungen ![]()
____________________________________
Bye Bastet |
|
|
|
|
|
#23 |
|
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
Anstatt: --> exit(0); /* exit ist eine Funktion die ein spezielles CPU Register mit dem Argument - hier numerisch "0" - füllt und das laufende Programm ordnungsgemäß beendet (inklusive automatischem Dateien schliessen und Speicher freigeben), nicht so bei abort(x); */
Schreib einfach: --> system("PAUSE"); /* dann wartet er bis Du eine Taste drückst und geht dann erst wieder in die IDE - (Integrated Developer Environment) oder auch Shell genannt - zurück */ Du willst ja, daß die Ausgaben, die das Programm macht, am Bildschirm stehen bleiben, und keine erzwungene Programmbeendigung mittels der Funktion exit(x); durchführen. return 1; Man kann mittels "if errorlevel 1 echo Rückgabewert ist größer gleich 1" (= if(errorlevel>=1) ) den Rückgabewert eines EXE oder COM Programms in einer DOS Batch Datei abfragen. So kann man eine Steuerung (mittels goto) innerhalb einer Batchdatei hinbekommen. Siehe help bei den DOS Befehlen ... mfg Kikakater |
|
|
|
|
|
#24 |
|
Elite
![]() Registriert seit: 07.09.2000
Beiträge: 1.036
|
gibts wo ne liste wo die main funktion deatiliert erklärt wird?
meine zb. main () int main() void main (void) etc. merci.
____________________________________
Bye Bastet |
|
|
|
|
|
#25 |
|
Inventar
![]() Registriert seit: 28.08.2001
Ort: Österreich
Beiträge: 1.597
|
da brauchst net viele beschrieben
diese 2 möglichkeiten sind richtig int main () int main (void) die 2te ist eigentlich die schönere von beiden das int hat den sinn, dass das system den rückgabewert weiß zB 0 wenn das prog erfolgreich beendet wurde void, bzw. hier dann deklarierte variablen werden beim aufrauf übergeben. |
|
|
|
|
|
#26 | |
|
Elite
![]() Registriert seit: 07.09.2000
Beiträge: 1.036
|
Zitat:
also i kapier da was nicht. eins weiss ich, main() scheint irgendwie zu wenig zu sein, aber ich hab halt schon die variante: void main (void) und die var. int main (void) gesehen aber worin ist da der unterschied??
____________________________________
Bye Bastet |
|
|
|
|
|
|
#27 | |
|
Senior Member
![]() Registriert seit: 03.09.2001
Alter: 41
Beiträge: 165
|
Zitat:
Aba es gibt da eine ganz gute C-Seite, die auch Linux und Perl Programmierung behandelt. Dachte ich teil euch die mal mit: http://www.pronix.de MfG PredeX
____________________________________
There are 10 types of people, those who understand binary and those who don\'t... Ask Me No Questions, And I Tell You No Lies! |
|
|
|
|
|
|
#28 | |
|
Aussteiger
![]() |
@Bastet
vielleicht hilft dir das: Zitat:
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
|
|
|
|
|
|
#29 |
|
Inventar
![]() Registriert seit: 28.08.2001
Ort: Österreich
Beiträge: 1.597
|
Wenn man eine Funktion definiert dann muss man
1) der Funktion sagen von welchem Typ der Rückgaberwert ist zB Code:
int addieren (void){
return 5 + 5;
}
zB Code:
int main (void){
.
.
.
printf("Ergebnis= %d", addieren (x, y);
.
.
}
int addieren (int x, int y){
return x + y;
}
|
|
|
|
|
|
#30 |
|
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
main()
ist das gleich wie int main (void) void bedeutet es wird kein Wert vom Betriebssytem übernommen. void im allgemeinen bedeutet kein Datentyp. void *Zeigervariable; bedeutet, daß der Variablen Zeigervariable Adressen jeglicher Zeigervariableninhalte zugewiesen werden können. char *Zeichenkette,*String_4711; int *Zeiger_auf_Lottoziehungszahl; Zeigervariable= Zeichenkette; Zeigervariable= String_4711; Zeigervariable= Zeiger_auf_Lottoziehungszahl; (Das) Ist alles möglich - lediglich das Zeiger_auf_Lottoziehungszahl= String_4711; ist nicht erlaubt, weil die Datentypen auf die die Zeigervariablen zeigen, unterschiedlich sind. Wenn man an der Eingabeaufforderung - dem DOS Prompt ist gemeint oder an der Linux Shell - folgendes eingibt: bastet_prg_maxipraxihaxi parameter1 2 3 4 parameter5 so muß / sollte man main folgendermaßen definieren um auf diese Strings (fünf an der Zahl, nämlich): "parameter1" "2" "3" "4" "parameter5" (ohne Anführungszeichen natürlich, NAAHHHH, bastet Du machst mich schwach !) in der Funktion main zugreifen zu können: int main ( int argc, char **argv ) oder int main ( int argc, char *argv[] ) Variante 1 deklariert argv als Zeiger auf einen Zeiger und darob ein Array von Strings. Variante 2 deklariert argv als Feld (=Array) von Strings. Ein String hat eine Anfangsadresse und wird so implementiert: char *zeigervariable; oder char zeichen_array_oder_auch_string_genannt[20] bzw. ohne Längenangabe: char zeichen_array_oder_auch_string_genannt[] Ohne Längenangabe kann man (muss man) ein Char Array in einem Funktionskopf deklarieren. argc beinhaltet 6 Argumente, nämlich den Programmnamen "bastet_prg_maxipraxihaxi" und die 5 eingegebenen Worte ("parameter1" bis "parameter5", dazwischen "2" "3" und "4" *herum[schüchter|drucks] ich tu*)Also: Code:
int main ( int argc, char **argv )
{
int i;
for(i=0; i<argc; i++)
printf("Argument %d:%s<\n",i,(*argv)++);
return 0;
}
Code:
int ich_machs_jetzt_in_einer_funktion (void); /* Prototyp */
int g_argc;
char **g_argv;
int main ( int argc, char **argv )
{
/* bitte nicht vergessen, sonst stürzt das Programm unweigerlich ab - u.U. zumindest */
g_argc= argc;
g_argv= argv;
ich_machs_jetzt_in_einer_funktion();
return 0;
}
int ich_machs_jetzt_in_einer_funktion (void)
{
int i;
char **l_argv= g_argv; /* lokale Zeigervariable, vielleicht brauchen wir den ursprünglichen Wert
der globalen Zeigervariablen g_argv ja noch,
deswegen g_argv hier nicht verändern */
for(i=0; i<g_argc; i++)
printf("Argument %d:%s<\n",i,(*l_argv)++);
return 0;
}
|
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|