char als Array
-
Hallo
ich brauche ein char-array 624 mal. Pro Feld sollen jeweils 2 Zeichen gespeichert werden können.
//Deklaration des Ausgabestrings:
char ausgabe[23713];
memset(ausgabe, ' ', 23712);
ausgabe[23712] = '\0';//Deklaration des Arrays:
char ses[624][2];//mit memset initalisiert:
memset(ses, ' ', 1248);jetzt findet die verarbeitung statt, in der ich u.a. dieses Array bei Bedarf fülle:
for(i = 0; i < ianzvi; i++)
{
ses[(ibeginn + 1)][0] = variabel[ianzv].byat[0];
ses[(ibeginn + i)][1] = variabel[ianzv].byat[1];
}Nachdem die Verarbeitung stattgefunden hat, soll dieses Array in den Ausgabestring übertragen werden. Die Frage ist nur wie?
Mit strncpy geht das nicht? Oder? Zeichen für Zeichen macht der auch nicht bzw. ich habe das nicht hinbekommen.Die Fragen sind:
- Stimmt memset? Nullterminiert muss das nicht sein? Oder? Das Array wird nur als "Speicherplatz" verwendet. Aber muss trotzdem nicht die letzte Stelle nullterminiert sein?
- Kann man das Array ses so füllen, wie ich das mache? Zeichen für zeichen übertragen? Oder wie macht man das eleganter?
3)Wie macht man das mit dem Ausgabestring? Wie überträgt man ein Array in einen String?
Oh man - String-Verarbeitung in C ist echt nicht ohne....
Vielen Dank
cu
George
-
Wenn du es als String ausgeben willst, brauchst du auf jeden Fall die terminierende 0.
Mir ist noch nicht ganz klar, wie du das Array ses auf das Array ausgabe übertragen willst. Wie hast du es denn bis jetzt versucht?
Zu deinen Punkten:
-
Der Aufruf von memset() stimmt. Es ist nur die Frage, ob du wirklich beabsichtigst lauter Leerzeichen in deinen Arrays zu haben. Für dein Datenarray brauchst du normalerweise keine terminierende 0. Aber das Array ausgabe braucht sie, wenn du es als String ausgeben willst.
-
So wie du das Array füllst, passt es schon.
-
Ein Array aus char wird in C String genannt, d. h. du hast eigentlich schon einen String :). (In C++ gibts eine eigene Klasse string)
-
-
Vielen Dank für die Antwort
in den Ausgabestring übertrage ich jetzt so:
for (i=0;i<624;i++)
{
ausgabe[h_ausg_lng] = ses[i][0];
h_ausg_lng = h_ausg_lng + 1;
ausgabe[h_ausg_lng] = ses[i][1];
h_ausg_lng = h_ausg_lng + 1;
}und das scheint auch zu gehen
-
geht memcpy() vielleicht?