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.