Problem mit Strings



  • Ich soll eine Funktion schreiben namens removeEnd(),die am Ende eines Strings
    eine bestimmte Anzahl Zeichen entfernt.
    Als ersten Parameter erhält die Funktion den String,als zweiten Parameter die
    Anzahl der zu entfernenden Zeichen am Ende des Strings.
    Prototypfolgt:
    void removeEnd(char*s,int n);
    Stringfunktion mit strlen();



  • Wie sehen deine konkreten Versuche aus?
    Wir machen hier nämlich keine Hausaufgaben...



  • Bojan schrieb:

    Ich soll eine Funktion schreiben namens removeEnd(),die am Ende eines Strings
    eine bestimmte Anzahl Zeichen entfernt.
    Als ersten Parameter erhält die Funktion den String,als zweiten Parameter die
    Anzahl der zu entfernenden Zeichen am Ende des Strings.
    Prototypfolgt:
    void removeEnd(char*s,int n);
    Stringfunktion mit strlen();

    Das ist ja interessant !

    Ich soll gerade eine Marshalling-Schicht zwischen COBOL und Java schreiben.

    Gruß,

    Simon2.



  • So um mal was sinnvolleres beizutragen: Wo genau ist dabei dein Problem? Oder wolltest du die Welt an deiner Aufgabe teil haben lassen? Wartest du darauf, dass dir jemand eine passende Funktion postet?

    Letzteres übernehme ich (ja, mir macht es Spaß)

    void CutEndOfString (char *lpString, int iCharsToCut)
    {
        int iStringLength = strlen (lpString);
        int iCutting = iStringLength - iCharsToCut;
    
        int i = iStringLength;
        while (i > iCutting)
        {
            lpString[i] = ' ';
            --i;
        }
    
        lpString[i] = '\0';
    }
    

    getestet, überarbeitet und funzt.

    EDIT: hier nocheinmal überarbeitet:

    void CutEndOfString (char *lpString, int iCharsToCut)
    {
        int iStringLength = strlen (lpString);
        if (iStringLength < iCharsToCut)
        {
            strcpy (lpString, "");
            return;
        }
    
        int iCutting = iStringLength - iCharsToCut;
    
        int i = iStringLength;
        while (i > iCutting)
        {
            lpString[i] = ' ';
            --i;
        }
    
        lpString[i] = '\0';
    }
    


  • Wieso eröffnest du den gleichen Thread nochmal im C sharp Forum? Nur weil du zuerst darauf hingewiesen wurdest, dass du keine Frage formuliert hast?



  • Noch ne mögliche Lösung:

    [code]
    void removeEnd(char*s,int n)
    {
      if (s)
      {
        int p = strlen(s) - n;
    
        if (p < 0)
        {
          p=0;
        }
    
        s[p]=0;
      }
    }
    [/code]
    

    Aber was das genau macht, musst du schon selbst rauskriegen. 😉



  • ungetestet

    void DeleteXBack(std::string& strFile, int iCount)
    {
        strFile.erase(strFile.length() - iCount, iCount);
    }
    

Anmelden zum Antworten