Verständnis Frage



  • chin842 schrieb:

    also muss ich ein n über scanf einlesen und dann

    atoi("n"); machen?

    omg 🙄

    am besten du suchst dir ne andere beschäftigung 😞



  • chin842 schrieb:

    if (argc<2 || (n=atoi(argv[1])) <= 0) {
            printf("Provide the number of digits!");
            exit(1);
    

    was genau macht die funktion.
    wenn ich das nicht ausklammer und z.b
    n=5; passiert trotzdem nix

    wenn ich das ausklammer, dann n=5; funktioniert die ganze Funktion.
    was genau macht des atoi?

    Das ist eine if Abfrage mit zwei Bedingungen. Da die beiden Bedingungen oderverknüpft sind, wird die if Anweisung ausgeführt, wenn eine der beiden Bedingungen wahr ist.
    Wenn du also n = 5 setzt, ist argc < 2 ( wenn du keinen Parameter an der Eingabeaufforderung übergibst ), somit ist eine Bedingung wahr und das Programm wird mit der Ausgabe "Provide the number of digits!" beendet.



  • chin842 schrieb:

    argc<2 aber argc ist doch gar nicht vergeben?

    Doch, das ist ein Parameter der main Funktion.



  • chin842 schrieb:

    also muss ich ein n über scanf einlesen und dann

    atoi("n"); machen?

    Hier übergibst du atoi einen String mit dem Inhalt 'n' (und '\0'). Das hat nix mit der eventuell in deinem Code vorhandenen Variable n zu tun...



  • ah okay 🙂
    aber wenn ich jetzt ne zahl einlesen lasse, muss ich des dann an n binden und dann die zahl atoi zuordnen lassen oder direkt an atoi einlesen lassen?



  • chin842 schrieb:

    ah okay 🙂
    aber wenn ich jetzt ne zahl einlesen lasse, muss ich des dann an n binden und dann die zahl atoi zuordnen lassen oder direkt an atoi einlesen lassen?

    Du sprichst in Rätseln! Formulier die Frage mal so, dass man wenigstens erahnen kann, was du wissen willst. 😃



  • okay.

    das Programm muss ja noch so ergänzt werden, dass eine Zahl eingelesen werden kann bzw. im Dos fenster eingegeben werden kann.
    an was binde ich diese Zahl und an welche stelle gehört diese Funktion hin?
    an n binden?



  • chin842 schrieb:

    das Programm muss ja noch so ergänzt werden, dass eine Zahl eingelesen werden kann bzw. im Dos fenster eingegeben werden kann.

    Ok, hattest du noch nicht erwähnt, glaube ich. Du willst also eine Benutzereingabe während der Laufzeit? Im Moment ist es ja so, dass der Benutzer den Wert als Kommandozeilenparameter übergeben kann bzw. muss - denn tut er es nicht, wird das Programm beendet (exit). Ist dir das klar? BB hat das eigentlich schon gut erklärt. Weißt du, was ein Kommandozeilenparameter ist?

    Wenn du stattdessen eine Eingabe im Programm realisieren willst, kannst du z.B. scanf benutzen, ja. Du forderst den Benutzer dann auf, eine Zahl einzugeben. Mit scanf kannst du auch direkt eine int-Variable befüllen. Das konvertieren vom String zum int (wie hier durch atoi) entfällt dann. Wenn du die Funktion benutzen willst, schau dir die Doku dazu mal an.

    chin842 schrieb:

    an was binde ich diese Zahl

    Du meinst zuweisen. Du willst einen Wert der Variable n zuweisen.

    chin842 schrieb:

    und an welche stelle gehört diese Funktion hin?

    Na spätestens vor die Stelle, an der du den Wert zum ersten Mal verwenden willst.

    chin842 schrieb:

    an n binden?

    Äh, Kartoffelsuppe? 😃



  • chin842 schrieb:

    an was binde ich diese Zahl und an welche stelle gehört diese Funktion hin?
    an n binden?

    Woher hast du eigentlich diese Bindungs-Sache? Wir C-Leute werden das nicht unbedingt verstehen, weil es mit der Semantik von C nicht gut zusammenpasst. In manchen anderen Sprachen kann man Namen an Werte "binden", exakt gesprochen: eigentlich nicht an Werte, sondern an Speicherstellen, die einen Wert beinhalten. Dort erzeugt man zB die Speicherstelle mit dem Wert 42 und bindet dann den Namen n daran, damit man n statt 42 sagen kann.

    In C stimmt das aber nicht. Ein Name ist in C die Speicherstelle, für die er steht, und kann niemals an eine andere gebunden werden. Wenn du auf unterschiedliche Speicherstellen zugreifen willst, musst du Zeiger nehmen, die selbst wieder Speicherstellen sind. Weit und breit keine "Bindung" zu sehen.
    🙂



  • @chin842
    wie hast du jezt eigentlich das programm ergänzt? damit das n eingelesen werden kann? 😃


Anmelden zum Antworten