Zum Inhalt springen

e.full

Mitglieder
  • Gesamte Inhalte

    53
  • Benutzer seit

  • Letzter Besuch

Beiträge von e.full

  1. 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)

    und da str4= 0 ist, ist das dann verboten

  2. ja ich verstehe das schon, ich danke auch klotzkopp

    also zeiger:

    zeiger, d.h. es ist eine variable, bieten doch jemanden, jetzt bezüglich in Programmiersprachen wie C, die möglichkeit, auf den speicher zuzugreifen.

    also bei 09:

    strcpy (str 4, str2);

    vorher hatten wir gesagt das str4 null ist

    und zu str2, dass es ein array auf dem stack ist, und die größe 3 hat

    da sollte doch eigentlich str2 in str4 kopiert werden

    ?? oder nicht

  3. so und jetzt zum letzten:

    09:

    quelle str2 zeigt auf den speicher, aus dem gelesen werden darf

    terminierter string ist auch vorhanden

    str4 zeigt auf speicher, in den geschrieben werden darf

    speicher groß

    -> gültiger zugriff

  4. also zu 08:

    die quelle test3 zeigt auf den speicher, aus dem gelesen werden darf

    dieser enthält einen terminierten string

    in ziel darf geschrieben werden,

    speicher is groß

    also wenn die bedingungen erfüllt sind, dann heisst es gültig

  5. es tut mir sehr leid bin bisschen verwirrt, deshalb komme ich bisschen durcheinander.

    07:

    stimmt in zeile 2 wurde str2 mit der länge 3 gesagt, aus diesem grund hat str3 jetzt auch eine länge von 3

    aus diesem grund ist sie gültig,

    bei 08:

    vorher hatten wir gesagt das str3[0] länge 11,

    hier bin ich mir ehrlich zu sein nicht so sicher

    und bei 09: auch net so sehr

  6. ehmm tut mir leid

    zeile 8

    habe ich mich verguckt,

    die quelle ist test3

    und 07:

    wir hatten ja gesagt das str1 der länge 5 ist in zeile 4 und str 2 3 in zeile 3

    deshalb habe ich da jetzt 8 stehen

  7. bei 07:

    die quelle ist str.2 und hate eine länge von 8

    in das zielspeicher dürfen 10bytes geschrieben werden

    08:quelle ist str2 und hat eine länge von 8

    in das zeilspecher dürfen 10bytes geschrieben werden

    09:

    zielzeiger zeigt auf den speicher in den geschrieben werden darf

    ???

  8. 07:

    also enthält einen terminierten string

    die quelle ist str2,

    der quellzeiger zeigt auf den speicher,

    in das Ziel darf auch geschrieben werden

    und deshalb denke ich das das gültig ist

    bei 08:

    der Quellzeiger zeigt auf Speicher , aus dem gelesen werden darf,

    enthält einen terminierten string

    quelle ist test3, wird mit kopiert

    aber kein gültiger zugriff

    bei 09:

    der quellzeiger zeigt auf den speicher

    in das ziel darf geschrieben werden

    enthält einen terminierten string.

    deshalbt gültig

  9. ja also ich muss ja zunächst schreiben wo die zeiger hin zeigen.

    bei strcpy

    weiss ich jetzt noch nicht genau wo die zeiger hin zeigen, ich weiss das

    die funktion strcpy eine zeichenkette kopiert.

    jetzt in den zeilen von 06-09

    06 es wird eine Zeichenkette von str1 in test1 kopiert

    07 str1 kopiert ihre zeichenkette in str2

    08 str3 kopiert ihr Nullelement in test3

    09 str4 kopiert ihre zeichenkette in str 2

    ich weiss jetzt nicht wie ich das anders beschreiben soll

  10. also ich habe da mal was versucht, aber weiss net ob es richtig ist:

    also ab zeile 3:

    03 str3 ist ein Array und ist gleichzeitig Element von 0 und 1

    04 str1 reserviert einen Speicherplatz

    05 str3 ist ein Array und gleichzeitig str1

    06 str1 kopiert eine Zeichenkette zu test1

    07 str1 und str2 kopieren zeichenketten

    08 str3 ist ein Nullelement

    09 str4 kopiert eine zeichenkezze zu str 2

  11. hmm ok danke, habe noch eine frage:

    ich habe ein ausschnitt aus einem c-programm:

    01 char *str1, *str4 = 0;

    02 char str2 [] = "t2";

    03 char *str3 [2] = {" Element_0" , "Element_1" };

    04 str1 = malloc (5);

    05 str3 [0] = str1;

    06 strcpy ( str1, "test1");

    07 strcpy (str1, str2);

    08 strcpy (str3[0], "test3");

    09 strcpy (str4, str2);

    also ich soll jetzt die programmzeilen nennen, in denen auf ungültige speicher zugegriffen wird, und genau beschreiben, weshalb die zugriffe unzulässig sind.

    nur ich weiss jetzt nicht wie ich das merke, gibt es da bestimmte regel oder so würde mich auf eine antwort freuen, da ich erst neu anfange zu programmieren und nicht weiss wie das so funktioniert.

  12. hallo habe ne frage;

    also wieso erwartet die funktion scanf Zeiger auf die einzulesenden Daten,

    und

    wieso nimmt die Funktion printf die auszugebenden daten direkt entgegen.

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...