Array in der Mitte teilen
-
Hm ich seh gerade die Eins (1) und L(l) sehe ja total gleich aus.
Ich markiere das L(l) mal dick!
for(int i = 0; i!=([b]l[/b] / 2); i++) { char x[i] = ary[i]; }; for(int a = ([b]l[/b] / 2 + 1); a!=[b]l[/b]; a++) { char y[a] = ary[(a + ([b]l[/b] / 2 + 1))]; };
-
Erstens: Du hast immer noch nicht gesagt, was der Compiler zu meckern hat (beim näheren hinsehen tippe ich darauf, daß die beiden 'char' im inneren des for() stören - dort legst du neue lokale Variablen an, die mit deinen vorher definierten x und y nichts zu tun haben).
Zweitens: Im Array 'y' sind am Ende die ersten l/2 Zeichen leer und die nächsten l/2 Zeichen enthalten Datenmüll.
PS: Verwende doch statt char-Arrays lieber std::string

-
Ach ich Depp
ja stimmt die 2 neu angelegten Variablen waren das Problem, aber jetzt gehts auch.
-
bool Degen(char ary[1024]) { int l = strlen(key); char x[1024] = ""; char y[1024] = ""; for(int i = 0; i!=(l / 2); i++) { char x[i] = ary[i]; }; for(int a = (l / 2 + 1); a!=l; a++) { char y[a] = ary[(a + (l / 2 + 1))]; }; cout << x << endl; cout << y << endl; return 0; }?!
void degen(const char* string, char* part_one, char* part_two, std::size_t max_size) { std::size_t len = std::min(std::strlen(string) / 2, max_size - 1); std::strncpy(part_one, &string[0], len); std::strncpy(part_two, &string[len], len); part_one[len] = 0; part_two[len] = 0; }
-
aja ...
#include <algorithm> // std::max #include <cstring> // std::strncpy #include <iostream> // nur std::cout ... für Funktion unwichtig! void degen(const char*, char*, char*, std::size_t); int main() { char arr[] = "Das ist ein Test!"; char first[25]; char last[43]; // ist egal wie groß der array ist ... solange entweder eine hälfte des strings reinpasst oder wenigstens max_size bei degen korrekt angegeben ist. degen(arr, first, last, 25); std::cout << arr << " => " << first << " | " << last << std::endl; } void degen(const char* string, char* part_one, char* part_two, std::size_t max_size) { std::size_t len = std::min(std::strlen(string) / 2, max_size - 1); std::strncpy(part_one, &string[0], len); std::strncpy(part_two, &string[len], len); part_one[len] = 0; part_two[len] = 0; }...
-
Hi,
danke ich werds ausprobieren, doch in der Zeile
std::size_t len = std::min(std::strlen(string) / 2, max_size - 1);sagt er, dass ein "(" rechts falsch sein soll und das "::" nicht richtig ist

Und was soll die 25 genau bewirken beim übergeben?
-
sagt er, dass ein "(" rechts falsch sein soll und das "::" nicht richtig ist

Dann setz mal ein
#undef minvor den Code ... Hast wohl einen Header drin der min als Makro definiert hat. Markos sind scheiße!
Und was soll die 25 genau bewirken beim übergeben?
Nja scheinst den Code noch nicht ganz verstanden zu haben ... es geht darum, dass das die maximale Anzahl an Zeichen (inkl. Null-Terminierung) ist, die in beide Arrays(first, last) passen.
-
soll ich auch mitmachen?
#include <string> #include <iostream> void degen(const std::string& str,std::string& one,std::string& two) { size_t len = str.len()/2; one=str.substr(0,len); two=str.substr(len); } int main() { std::string first,last; degen("Dies ist ein Test!",first,last); std::cout << arr << " => " << first << " | " << last << std::endl; }
-
Funktioniert ja jetzt
danke
-
pö... war nicht gesagt das normale std::strings genutzt werden dürfen

-
(D)Evil schrieb:
pö... war nicht gesagt das normale std::strings genutzt werden dürfen

Es war auch nicht gesagt, daß man die Standard-Bibliothek nicht verwenden darf
