# [C] char Array variabel deklarieren



## moistwanted (31. Mai 2007)

Hi Leute!

Ich habe folgendes Problem:
Ich will ein char Array definieren und später erst Zeichen in das Arraya speichern.

Das ganze sieht so aus:

```
char s1[]="";
....
scanf("%s", &s1);
```

Beim compilieren mit gcc wird immer diese Warnung ausgegeben:
rechneruebung07.c:24: warning: char format, different type arg (arg 2)

Weiß jemand wie ich die weg kriege?


----------



## Thomasio (31. Mai 2007)

char s1[] = ""; bekommt seine länge beim initialisieren schon als 0 gegeben, und in null platz kann man halt auch null einlesen

So wie du das machen willst, nimm ein char* zum einlesen, und wenn es hinterher unbedingt char[] sein muss, dann musst du es halt konvertieren oder mit strcopy kopieren, nachdem du fertig bist mit einlesen und die genaue länge kennst


----------



## MCoder (31. Mai 2007)

Hallo,

der zweite Parameter von "scanf" muss ein Zeiger sein. Da aber char-Arrays schon Zeiger sind, musst du hier das "&" weglassen.

Du musst außerdem die Größe des Arrays schon vorher festlegen. Wenn "scanf" dort etwas reinkopieren soll, muss der Speicher dafür auch vorhanden sein. Ein Problem entsteht dadurch, dass man nicht voraussehen kann, wie lang die Eingabe denn nun tatsächlich wird. Daher ist es sinnvoll die, die Stringlänge zu begrenzen, die "scanf" verarbeiten soll. Anderfalls droht ein Pufferüberlauf.

```
char s1[20];
// ...
scanf("%19s", s1);
```
Gruß
MCoder


----------

