Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Klotzkopp

    Zeiger

    Wie kommst du auf 8 und 10? str2 kommt in Zeile 8 überhaupt nicht vor. Ich bekomme langsam das Gefühl, du willst mich veralbern. Ja und woraus schließt du das?
  2. Klotzkopp

    Zeiger

    Hast du geprüft, ob der Zielspeicher auch groß genug ist? Das war doch das Problem in Zeile 6. Warum? Wohin zeigt denn der Zielzeiger?
  3. Klotzkopp

    Zeiger

    Wenn du das nicht begründest, kann ich nicht sagen, ob du hier richtig gedacht hast, aber das Ergebnis stimmt.
  4. Klotzkopp

    Zeiger

    Nicht ganz. Die Quelle ist "test1", das ist ein Literal der Länge 6, denn die Terminierung muss man mitzählen. Die wird von strcpy auch mit kopiert. Die Quelle ist also soweit in Ordnung. In das Ziel darf auch geschrieben werden, aber nur 5 Bytes. Dies ist also die erste Zeile mit ungültigem Zugriff.
  5. Klotzkopp

    Zeiger

    Ich sagte doch, dass strcpy nichts daran ändert, wohin die Zeiger zeigen. Quelle und Ziel zeigen dahin, wo sie vorher auch hingezeigt haben. Du sollst die vier Dinge prüfen, die ich da hingeschrieben habe. Das kannst du nicht in einem Satz abhandeln.
  6. Klotzkopp

    Zeiger

    strcpy ändert nichts daran, wo die Zeiger hinzeigen. Nein, der erste Parameter von strcpy ist das Ziel, der zweite ist die Quelle. Bei strcpy musst du prüfen: ob der Quellzeiger auf Speicher zeigt, aus dem gelesen werden darf, ob dieser Speicher einen terminierten String enhält, ob das Ziel auf Speicher zeigt, in den geschrieben werden darf, und ob dieser Speicher groß genug für den String (mit Terminierung) ist. Mach das mal für Zeile 6.
  7. Klotzkopp

    Zeiger

    Kannst du bitte auf das Wort "irgendwie" verzichten? Du kannst nicht "wissen", welche Zeilen ungültig sind, ohne genau herauszuarbeiten, welcher Zeiger wohin zeigt, und was wohin kopiert wird. Wenn du das "irgendwie" nicht kannst, können wir dir hier auch nicht helfen. Du musst schon konkret erklären, womit du Probleme hast.
  8. Klotzkopp

    Zeiger

    Was genau ist denn unklar? Wenn ich dir noch mehr Beispiele gebe, kann ich dir ja auch gleich die Komplettlösung vorsetzen.
  9. Klotzkopp

    Zeiger

    Du musst da schon ein wenig genauer arbeiten: str3 ist ein Array von 2 Zeigern, str3[0] und str3[1]. str3[0] zeigt auf ein Literal der Länge 11, str3[1] auf ein Literal der Länge 10. str1 zeigt auf gültigen Speicher der Länge 5. str3[0] zeigt nicht mehr auf Literal, sondern auf denselben gültigen Speicherbereich wie str1. usw.
  10. Klotzkopp

    Zeiger

    Schreib auf, wohin die einzelnen Zeiger zeigen, also unintialisiert, NULL, Literal (mit Größe) oder gültiger Speicher (mit Größe), und prüfe Zeile für Zeile, was die Anweisungen tun. Beispiel : Zeile 1: str1 ist uninitialisiert, str4 ist NULL Zeile 2: str2 ist ein Array auf dem Stack, Größe 3 usw.
  11. Klotzkopp

    Zeiger

    Folgende Operationen sind verboten, weil sie undefiniertes Verhalten erzeugen: Jegliche Zugriffe über uninitialisierte Zeiger Jegliche Zugriffe über Nullzeiger Schreibzugriffe auf Stringliterale Jegliche Zugriffe über den alloziierten Speicherbereich hinaus (Buffer Overflow)
  12. Klotzkopp

    Zeiger

    Weil sie sie nicht verändern muss.
  13. Dann musst du den Wert von result prüfen. scanf gibt die Anzahl der erfolgreich eingelesenen Felder zurück, oder EOF bei einem Fehler. In deinem Fall würde das in etwa so aussehen: if( result == 1 ) { // Eingabe OK } else { // Fehler }[/code]
  14. Ich verstehe dich nicht. Ich meine, dass du dir diese Seite aufmerksam durchlesen sollst.
  15. Das geht, indem du den Rückgabewert von scanf prüfst. Das hatten wir doch schon.
  16. Diese Information befindet sich auch in dieser Struktur. Wie wäre es denn, wenn du dir endlich mal die Dokumentation der Struktur IP_ADAPTER_INFO durchliest, auf die du schon mehrfach verwiesen wurdest?
  17. Klotzkopp

    Problem Linker

    Bei einem Linkerfehler fehlt üblicherweise eine Bibliothek, in deinem Fall Ws2_32.lib, wie man aus dem MSND-Library-Eintrag für gethostbyname erkennen kann.
  18. Möchtest du uns damit sagen, dass du mit MS Visual C++ dasselbe Problem hast?
  19. Normalerweise reicht es, wenn du die vorgegebene Dateierweiterung auf .c änderst.
  20. Klotzkopp

    Zeiger

    In C werden Funktionsparameter "by value" übergeben, d.h. die Funktion bekommt eine Kopie des Wertes, der beim Aufruf übergeben wurde (Ausnahme: Arrays). Änderungen an dieser Kopie ändern natürlich nichts an der Originalvariablen. Damit eine Funktion wie scanf also überhaupt etwas tun kann, muss ein Verweis übergeben werden, über den die Originalvariable erreichbar ist. Und die einzige Möglichkeit in C, das zu tun, ist ein Zeiger.
  21. Hmm, kann ich nicht reproduzieren. Ich muss die Zahl zweimal eingeben, weil du zweimal scanf aufrufst, aber danach geht es normal weiter. Welchen Compiler bzw. welche Entwicklungsumgebung benutzt du?
  22. fflush(stdin) erzeugt undefiniertes Verhalten. Mach das raus.
  23. "er ließt da irgendwie gar nicht mehr ein" ist keine ausreichende Fehlerbeschreibung. Zeig den Code, und beschreib, was du eingibst und was das Programm macht.
  24. scanf liest vom Standardeingabestrom des Prozesses, da muss nicht zwangsläufig die Tastatur dahinterstehen, das Konzept ist allgemeiner. Im Normalfall ist es aber so. Scanf wertet dabei den Formatstring aus ("%f" in deinem Fall) und schreibt dann die eingelesenen Daten in die zusätzlichen Parameter. Außerdem hat die Funktion aber auch noch einen Rückgabewert, den du abfragen kannst, indem du den Ausdruck mit dem Funktionsaufruf einer int-Variablen zuweist: int result = scanf( ... );
  25. All diese Funktionen setzen aber voraus, dass die Eingabe als Zeichenkette vorliegt, und selbst dann kann man nur jedes Zeichen einzeln prüfen. Ich würde als einfachste Lösung erst einmal den Rückgabewert von scanf prüfen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...