char array teils in anderen char array kopieren.



  • Juhu ich habe ein char array (char test[] = "aha abc") und will zum Beispiel nur von Zeichen 3-5 allein in ein anderes array kopieren, wie bewerkstellige ich das ? habs mit einer if schleife probiert, klappt nicht richtig. 2. Frage: wenn ich ein array vorbereite (char test[20], z.B:) klappt es einfach nicht einen variablennamen statt der "20" zu nehmen. (char test[sizeTest]) Es klappt nur wenn ich vorher #define sizeTest 20 angegeben habe. Mein Programm saugt sich die Zahl aber während des Programmablaufes, bzw. generiert sie, sodass ich damit nichts anfangen kann. Danke!



  • 1. Kopieren

    char szTest[] = "aha abc";
    char szErgebnis[5];
    int j=0;
    
    for (int i=3; i<=5;i++)
    {
        szErgebnis[j++] = szTest[i];
    }
    

    2. Speicher

    du musst deinen Speicher dynamisch allocieren

    char *pszTest = NULL;
    int nSize;
    
    nSize = 10;
    
    // speicher allocieren
    pszTest = new char [nSize];
    
    ... // hier steht dein code
    
    // speicher freigeben
    delete[] pszTesz;
    


  • #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
       // Zeichen 3-5 aus einem String rausholen
       char buf[] = "EinString";
       char buf2[100];
       string s(buf);
       strcpy(buf2, s.substr(3,3).c_str());
       cout << buf << endl;
       cout << buf2 << endl;
    
       // So klappts nicht:
       // int size = 2;
       // char buffer[size];
    
       // So klappts:
       const int size = 20;
       char buffer[size];
    
       // So klappts auch dynamisch:
       int size2 = 20;
       char* buffer2 = new char[size2];
       // ...
    
       delete[] buffer2;
    
       return 0;
    }
    


  • 1. eine sehr schnelle Methode sollte folgendes sein

    #include <cstring>
    
    void copy_substr(char *to,const char *from,size_t start,size_t end) {
      std::memcpy(to,from+start,end-start);
      to[end-start]=0;
    }
    
    int main() {
      const char *str="aha abc";
      char to[3];
      copy_substr(to,str,3,5);
    }
    

    2. http://tutorial.schornboeck.net/dyn_speicher.htm



  • Zu 1. geht doch auch ganz leicht strncpy.

    int main()
    {
        const char* src = "aha abc";
        char dest[3] = { 0 };
    
        strncpy(dest, src + 3, 2);
    }
    


  • @Tankian
    man: memcpy(3) ist mir da aber lieber, weil man: strncpy(3) da teilweise mit 0 auffüllt oder nicht (wie bei dir) und deswegen nicht so schnell kopieren kann, wie memcpy.


Log in to reply