title image


Smiley Re: char als Array
Kurz vorab: ich kenne zur Hauptsache Standard/ANSI C und Linuxbibliothek GTK+



> for(i = 0; i < ianzvi; i++)

> {

> ses[(ibeginn + 1)][0] = variabel[ianzv].byat[0];

> ses[(ibeginn + i)][1] = variabel[ianzv].byat[1];

> }



Also diese for-Schleife wird sicherlich eine Endlosschleife sein. Also ganz schlimm!

Denn überleg doch mal: wo ist da die Abbruchbedingung?



> char ausgabe[23713];

> memset(ausgabe, ' ', 23712);



Das ist denke ich doch soweit ok. Man sollte die Speicherbereiche, von denen man nicht

so genau weiss, wie später andere Prozesse darauf zugreifen werden, immer auf Null

setzen. Oder wie hier bei Strings, auf Leerzeichen. Das Zeichen '\0' würde ich

allerdings an den Anfang des Strings setzen, solange der String leer ist. Wird der

String verändert, dann jeweils hinter das letzte Zeichen im String.



Das Array ses würde ich schon Zeichen für Zeichen füllen. Es ist ja nur eine sehr

kurze Schleife. Und eine Funktion wie strcpy ist da eventuell langsamer. Kann man

aber auch verwenden.



Du musst hierbei aber auch bedenken, dein Array mit jeweils 2 Zeichen muss 3 Byte

gross sein. Nicht 2 Byte. Du brauchst die 2 Zeichen und das Zeichen '\0' dahinter.

Also so:



//Deklaration des Arrays:

char ses[624][3];



//Verarbeitung:

ses[(ibeginn + i)][0] = variabel[ianzv].byat[0];

ses[(ibeginn + i)][1] = variabel[ianzv].byat[1];

ses[(ibeginn + i)][2] = '\0';



Erst dann kannst Du das Array vernünfig in einen anderen String übertragen, wenn Du

Funktionen wie strcpy verwenden willst. Es gäbe allerdings noch andere Möglichkeiten.

Z.B. das Array Byteweise in einen String kopieren. So nach dem Motto:



ausgabe[0] = ses[0][0] u.s.w.



Das erstmal dazu!



Vielleicht hilft dir ein Beispielcode von mir noch etwas weiter. Ich habe für

Stringfunktionen eine eigene Bibliothek programmiert. Das solltest Du auch machen.

Denn die Sache mit den Strings ist echt recht kompliziert. Wenn man ein paar

eigene Funktionen dazu hat, die man oft verwenden kann, dann wird vieles leichter.

Hier eine Funktion, die zwei Strings zusammenfügt und dabei ein neues Stringobjekt

erzeugt:



CglString* cgl_string_new_set_simple(const char *string1, const char *string2) {



char *newString;

int cnt, cnt2;



newString=_cgl_string_malloc(strlen(string1)+strlen(string2));



for(cnt=0;; cnt++) {



if(string1[cnt]=='\0') break;

newString[cnt]=string1[cnt]; }



for(cnt2=0;; cnt++, cnt2++) {



newString[cnt]=string2[cnt2];

if(string2[cnt2]=='\0') break; }



return (CglString*)newString; }



/* END OF cgl_string_new_set_simple() */

--
MyMiniCity: Einwohner ansiedeln
MyMiniCity: Industrie bauen



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: