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); }
-
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.