Char array von funktion beschreiben lassen

Gast #2126755
Lesenswert?

Nö.

>   char * text;

Unterschied Pointer und Array im C Buch nachlesen.
Definition von Arrays im C Buch nachlesen.

>     text = 'bla';

Unterschied ' und " im C Buch nachlesen.

>     text = 'bla';

Doku zu strcpy() im C Buch nachlesen.

>  fillaraay(&text);
>}
>
>void fillaraay(char * text)

Deklaration von Funktionsprototypen im C Buch nachlesen.

> void main

Definition von Funktionen im C Buch nachlesen.
Rückgabewert von main() gemäß Standard im C Buch nachlesen.
#2126760
Lesenswert?

liopleurodon schrieb:
> stimmt das so???
>
> void main
> {
>   char * text;

Wo zeigt der Pointer hin?
Das ist nur eine Pointervariable. Sie kann auf einen Speicherbereich 
zeigen. Nur: Wo ist der Speicherbereich, auf den du den Pointer zeigen 
lassen willst, so dass du dort Werte ablegen lassen kannst? In einem 
Pointer kannst du keinen String ablegen. Dazu brauchst du ein Array.

>   fillaraay(&text);
> }
>
> void fillaraay(char * text)
> {
>     text = 'bla';

Strings werden in C in " eingeschlossen. Ein einfaches ' ist ein 
einzelner Character, aber kein String  -> C-Buch kaufen und 
durcharbeiten!


http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
1
void main
2
{
3
  char text[80];
4
  fillaraay(&text);
5
}
6

7
void fillaraay(char * text)
8
{
9
  strcpy( text, "bla" );
10
}
Gast #2126761
Lesenswert?

1
void fillaraay(char ** text);
2

3
int main(void)
4
{
5
  char * text;
6
  fillaraay(&text);
7

8
  return 0;
9
}
10

11
void fillaraay(char ** text)
12
{
13
    *text = "bla";
14
}
So würde es gehen, ist aber mit Sicherheit nicht das was Du eigentlich 
willst. Und der Name der Funktion wäre dann auch falsch.
#2126776
Lesenswert?

liopleurodon schrieb:
> danke für die schnellen antworten.
> d.h. das wären dann so oder?

Nein

>
> void main
> {
>   char text[5];
>   char * ptext;
>   ptext = &text;
>
>   fillaraay(ptext);

Wozu brauchst du ptext?

Wenn du den Namen eines Arrays anführst, ohne eine Indexoperation [] 
darauf zu machen, dann gilt der Name des Arrays bereits als Pointer auf 
das erste Element

   fillarray( text );

>
> }
>
> void fillarray(char * ptext)
> {
>     *ptext = "bla";

ptext ist ein Pointer.
Also ist *ptext, das, worauf der Pointer zeigt. Und das ist: ein 
Character, denn ptext ist ein Pointer auf einen Character ( char * ). 
Ein Character kann aber keinen String aufnehmen, sondern nur ein 
einzelnes Zeichen.

Weiters: Ein String ist im Grunde auch nur ein Array. Und Arrays kann 
man nicht zuweisen!
Aber es gibt vordefinierte Funktionen dafür.   C-Buch kaufen

Lies doch bitte wenigstens das hier
http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
ehe du einen neuen Versuch startest (was unnötig ist, weil entsprechende 
Lösungen schon gepostet wurden)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren