mehr Zeichen in ein char



  • Hi

    ich hab da ein problem

    char Sterne(float wert)
    {
         char star;
    
         if(wert>=1000) star = "**";
         return(star);
    }
    

    hierbei bekomm ich immer invalid conversion from `const char*' to `char' als Fehlermeldung!!

    habs auch schon mit star[] versucht ging aber auch nicht

    Kurzzusammenfassung: Ich möchte mehrere Sterne in einer Variable speichern und die dann auch wieder ausgeben!!

    mfg



  • Ja, ein char ist nunmal nur ein einziges Zeichen 😉
    Da wirst du wohl mit Arrays arbeiten müssen.

    //EDIT: Falscher Quelltext



  • char* Sterne(float wert)
    {
    char star[3] = {0};

    if(wert>=1000) strcpy(star,"**");

    return(star);
    }

    ist Quatsch, weil star ne lokale Variable ist und die kannste nicht zurückgeben. Entweder strdup verwenden oder

    char* Sterne(float wert)
    {
    static char star[3] = {0};

    if(wert>=1000) strcpy(star,"**");

    return(star);
    }



  • char *Sterne(float wert)
    {
        if(wert>=1000)
        {
            return ("**");
        }
    
        return ("");
    }
    


  • @ Horst irgendwie läuft deins nicht
    @ feigling wäre nett wenn du mir noch einiges an deiner funktion erklärst damit ich die auch verstehe 😃

    char* Sterne(float wert)
    {
    static char star[3] = {0};

    if(wert>=1000) strcpy(star,"**");

    return(star);
    }

    1)warum ist hinter dem char in Funktionskopf ein *
    2)was hat das static zu bedeuten
    3)was bedeutet (0) kenn das nur als ' '
    4)strcpy(star,"**"); kann das ein wenig genau erklärt werden?
    5)bekom immer die Fehlermedleung ` strcpy' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears



  • www.pronix.de

    und dann das open c book.



    1. weil du nen String zurückgeben willst und kein einzelnen Char
    2. das ist dafür da, damit der Speicher für char star[3] erhalten bleibt und nicht nach Verlassen der Funktion gelöscht wird
    3. Das füllt das Array mit 0en
    4. strcpy -> um strings zu kopieren
    5. #include <string.h> in den Code packen


  • #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    
    void Ausgabe(float netto);
    char* Sterne(float netto);
    
    int main()
    {
    
        float netto = 0.0;
    
        printf("\t\t\tFaelschungssichere Rechung\n\t\t\t==========================");
    
        printf("\n\nWarenwert:");
        scanf("%f",&netto);
        Ausgabe(netto);
        getch();
    
    } 
    
    void Ausgabe(float netto)
    {
        printf("\n\nWarenwert:    Euro%c%.2f***",Sterne(netto),netto);
        printf("\nMehrwertsteuer: Euro**%.2f***",netto*0.16);
        printf("\nEndbetrag       Euro**%.2f***",netto*1.16);
    }  
    
    char* Sterne(float wert) 
    { 
    static char star[3] = {0}; 
    
    if(wert>=1000) strcpy(star,"***"); 
    
    return(star); 
    }
    


  • was mach ich flasch?

    PS: die anzahl der Sterne soll je nach größe des Nettowertes eingefügt werden!!



  • man verwendet

    [cpp]printf("%s",string);[/cpp]

    für strings



  • das array muss
    [4]
    groß sein, weil 3 sternchen und ein \0 enthalten sein müssen



  • @HoP-PeL

    Ein paar kurze Kommentare:

    Grundform eines C-Programms:

    int main(void)
    {
        /* code */
    
        return 0;
    }
    

    Es muss %s (für einen string) statt %c (für ein character) heißen:

    printf("\n\nWarenwert:    Euro%s%.2f***", Sterne(netto), netto);
    

    Ein Feld, das einen String der Länge n aufnehmen soll, muss n+1 chars lang sein! Am Besten einen entsprechend großen definieren, so dass nix schief gehen kann:

    static char star[16];
    


  • ja THX das mit dem Feld war mir klar war auch vorher anders habs dann wohl im eifer des Gefechts übersehen thx für die schnelle Hilfe!!



  • lol, sicher


Anmelden zum Antworten