- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: (gelöst) strcpy() aus C18 funktioniert nicht

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    37
    Beiträge
    150

    (gelöst) strcpy() aus C18 funktioniert nicht

    Hallo!

    Ganz blödes Problem:

    Die Funktion strcpy() funktioniert nicht. Also ich wollte die halt ganz normal verwenden.

    char string[10] = {0};

    strcpy(string, "Hallo");

    Aber leider funktioniert das nicht. Der Prototyp dazu sieht folgendermaßen aus:
    char * strcpy( char * dest, const char * src );

    So und jetzt mein Problem: Er schreibt immer als Warning hin:
    Warning [2066] type qualifier mismatch in assignment

    Er meint damit das "Hallo". Wenn ich versuchen einen TypeCast zu machen dann schreibt er mir auch ne Warning hin.
    Also ich probiere dann so: strcpy(string, (const char)"Hallo");
    Oder nur const in Klammer, nutzt auch nix. Da kommt Suspicious Pointer Conversion
    Also in string steht nach der Funktion nix drinnen. Länge ist 0.
    Wie kann ich das Problem lösen?

    lg,

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Das Problem ist, dass Literale wie "Hallo" ja irgendwie im PROGRAMM-Speicher stehen.
    "strcpy" liest (und schreibt) aber normalerweise aus dem SRAM.
    Also muß irgendwer zuerst das Literal aus dem Flash in den SRam kopieren.
    Da kommt's auf den C an. Manche kopieren solche Literale automatisch in den SRAM, manche wohl nicht.

    wenn du z.B. schreibst

    char hallo[] = "Hallo"

    und dann strcpy(string, hallo)

    sollte es auf jeden Fall gehen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    37
    Beiträge
    150
    Hallo!

    Danke für den Tipp. Muss natürlich irgendwo im Programmspeicher stehen. Aber ich hab das jetzt anders gemacht.
    Eigentlich brauchte ich das strcpy() für die LCD Ansteuerung. Dort hat es nämlich nicht funktioniert zu sagen:
    Ausgabe("Hallo");

    Aber ich jetzt den Prototypen geändert:

    Ausgabe(const rom char *text);
    und schon gings.

    lg,

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests