# Array in einen String konvertieren



## Chucky-GFX (15. Januar 2006)

Hallo, ich würde gerne einen Array in einen ganz normalen String umwandeln. Bestmöglich noch in einen Integer.

Vielen Dank für die Hilfe im vorraus

MfG Chucky


----------



## Matthias Reitinger (15. Januar 2006)

Welche Art von Array? Welche Art von String?


----------



## Chucky-GFX (16. Januar 2006)

es ist ein character array und soll in einen char string konvertiert werden...halt einfach die einzelnen elemente in einem zusammen hängenden niederschreiben


----------



## Tobias K. (16. Januar 2006)

moin


Welche Art "char string" denn?
AnsiString?
string?
CString?
.....
Ein char-Array ist übrignens auch ein String.



mfg
umbrasaxum


----------



## Chucky-GFX (16. Januar 2006)

ich möchte einfach einen 'char array[xx];' in ein ganz normales 'char blablub;' haben..


----------



## Dennis Wronka (16. Januar 2006)

char blablubb kann aber nur *1* Zeichen enthalten.
Du koenntest hoechstens char* blablubb draus machen.


----------



## Chucky-GFX (16. Januar 2006)

das is schlecht... und wie krieg ich das mit dem char* hin ?


----------



## Dennis Wronka (16. Januar 2006)

Dazu musst Du dem Zeiger erstmal mit malloc() entsprechend grossen Speicher zuordnen, danach kann Du mit strncpy() Deinen Char-Array dort hinein kopieren.
Wenn Du den Zeiger nicht mehr brauchst vergiss nicht den Speicher mit free() wieder freizugeben um Speicherlecks zu vermeiden.


----------



## Chucky-GFX (16. Januar 2006)

Könntest du mir schnell ein beispiel schreiben wie das aussähe 

MfG & Vielen Dank


----------



## Dennis Wronka (16. Januar 2006)

Zum Beispiel koennte das ungefaehr so aussehen:

```
#include <stdio.h>
#include <stdlib.h>

const char mein_char_array[]="Hallo Welt";
char *mein_zeiger;
int main()
{
 mein_zeiger=malloc(strlen(mein_char_array)+1);
 strncpy(mein_zeiger,mein_char_array,strlen(mein_char_array));
 printf("%s\r\n",mein_zeiger);
 free(mein_zeiger);
}
```


----------



## Chucky-GFX (16. Januar 2006)

Ich danke vielmals...


----------



## Dennis Wronka (16. Januar 2006)

Nichts zu danken.
Falls Deine Frage damit geklaert sein sollte denk bitte noch daran den Thread als erledigt zu markieren.

Ich frag mich allerdings warum Du lieber mit einem Zeiger auf ein Stueck Speicher arbeiten willst als mit einem Char-Array. Von der Nutzung her unterscheiden sich die beiden doch im Grunde nicht wirklich.


----------



## RedWing (16. Januar 2006)

Dennis Wronka hat gesagt.:
			
		

> Zum Beispiel koennte das ungefaehr so aussehen:
> 
> ```
> #include <stdio.h>
> ...


Hallo, du benutzt strncpy nicht ganz richtig:
entweder:

```
mein_zeiger=malloc(strlen(mein_char_array)+1);
 strncpy(mein_zeiger,mein_char_array,strlen(mein_char_array));
 mein_zeiger[strlen(mein_char_array)] = '\0';
```
oder

```
mein_zeiger=malloc(strlen(mein_char_array)+1);
 strncpy(mein_zeiger,mein_char_array,strlen(mein_char_array) + 1);
```

Siehe 
http://www.cplusplus.com/ref/cstring/strncpy.html

Gruß

RedWing


----------



## Dennis Wronka (16. Januar 2006)

Ups, ganz vergessen.
Hatte es vorhin so wie gepostet getestet und da es kein Problem bei der Ausgabe gab (also keinen Schrott hinter dem String) dachte ich das waer so okay.


----------



## RedWing (16. Januar 2006)

Dennis Wronka hat gesagt.:
			
		

> Ups, ganz vergessen.
> Hatte es vorhin so wie gepostet getestet und da es kein Problem bei der Ausgabe gab (also keinen Schrott hinter dem String) dachte ich das waer so okay.



Das liegt wohl daran das malloc das letzte byte zufällig mit 0 initialisiert. Muss aber
nicht so sein 

Gruß

RedWing


----------



## Dennis Wronka (16. Januar 2006)

Moeglicherweise war in dem allozierten Bereich grad wirklich nur eine Reihe Nullen, oder eben zufaellig an der richtigen Stelle.


----------

