2-D Array, Übergabe Probleme mit Nullterminator
-
Dieser Beitrag wurde gelöscht!
-
strcpy ist hier eine schlechte Wahl, sie geht von Strings als Tabelleninhalt aus und überhaupt von initialisierten Tabelleninhalten.
-
@wutz Nichts anderes tut aber seine Funktion
func1()
die er oben gezeigt hat.
-
@swordfish
Das hindert dich nicht, den Frager auf sein Fehldesign und Fehlimplementierung hinzuweisen bzgl. UB usw.Hier mal eine Variante ohne strcpy und auch ohne memcpy:
void f(size_t n, const char a[][n], char *x, int i) { struct {char m[n];} *f = (void*)a[i], *t = (void*)x; *t = *f; } enum {N=20}; int main() { char a[][N]={"null","eins","zwei","drei"}; char x0[N]="",x1[N]="",x2[N]="",x3[N]=""; puts("====="); puts(x0); puts(x1); puts(x2); puts(x3); puts("====="); f(N,a,x1,1); f(N,a,x2,2); puts(x0); puts(x1); puts(x2); puts(x3); puts("====="); return 0; }
Falls sich jemand berufen fühlt, mit mir hier über UB oder nicht zu diskutieren, kann er gerne mal vorlegen.
-
@Wutz Was ist daran
@newinc sagte in 2-D Array, Übergabe Probleme mit Nullterminator sinngemäß:
void func1(char array[][16], char *extracted, uint8_t Index){ uint8_t i; // zeichenketten sind mit \0 terminiert for(i=0;i<strlen(array[Index]);i++){ extracted[i] = array[Index][i]; } }
UB?
-
strcpy ist hier eine schlechte Wahl, sie geht von Strings als Tabelleninhalt aus und überhaupt von initialisierten Tabelleninhalten.
-
@wutz Das beantwortet nicht meine Frage.
-
@swordfish
Nerv nicht rum sondern lies meine Antworten.
-
@wutz Arrogant und herablassend wie wir Dich kennen. Einfach herrlich, Wutzi.
-
@Wutz
Ja sieht sehr toll aus. Ist nur leider komplett unverständlich und wurde von dir auch nicht erklärt, und daher ist das am Ziel vorbei, meinst du nicht?