C Strings



  • Hallo,
    ich bin gerade am lernen von C++ mit dem Buch C++ von A bis Z. Eine Stelle ist mir noch ein wenig unklar:

    // carray2.cpp
    #include <iostream>
    #include <cstring>
    using namespace std;
    int main(void) {
       char carray1[80];
       char carray2[] = "Ein C-String";
       strncpy ( carray1, carray2, sizeof(carray1)-1 );
       cout << "carray1: " << carray1 << '\n';
       return 0;
    }
    

    In der Beschreibung steht:

    char*  strncpy ( char * dst, const char * src, size_t n );
    

    Hiermit werden vom String, der in »src« steht, n Zeichen nach »dst« kopiert. Aber wieso werden hier im Beispiel 79 Zeichen kopiert? Der String ist doch nur 12+1 Zeichen lang.



  • Max123 schrieb:

    Hallo,
    ich bin gerade am lernen von C++ mit dem Buch C++ von A bis Z. Eine Stelle ist mir noch ein wenig unklar:

    // carray2.cpp
    #include <iostream>
    #include <cstring>
    using namespace std;
    int main(void) {
       char carray1[80];
       char carray2[] = "Ein C-String";
       strncpy ( carray1, carray2, sizeof(carray1)-1 );
       cout << "carray1: " << carray1 << '\n';
       return 0;
    }
    

    In der Beschreibung steht:

    char*  strncpy ( char * dst, const char * src, size_t n );
    

    Hiermit werden vom String, der in »src« steht, n Zeichen nach »dst« kopiert. Aber wieso werden hier im Beispiel 79 Zeichen kopiert? Der String ist doch nur 12+1 Zeichen lang.

    Es werden nicht 79 Zeichen von src nach dst kopiert, sondern strlen(src) Zeichen von src oder maximal n Zeichen - je nachdem, was kleiner ist. Falls strlen(src) kleiner als n ist, werden danach n - strlen(src) Nullen nach dst geschieben.

    Stefan.



  • ok danke da war das im Buch ja etwas undeutlich geschrieben für einen Anfänger.



  • Max123 schrieb:

    ok danke da war das im Buch ja etwas undeutlich geschrieben für einen Anfänger.

    Es gibt ja auch C++-Referenzen im Netz. Z.B. die hier: http://www.cppreference.com/wiki

    Stefan.


Anmelden zum Antworten