Probleme mit char Array

prinzipiell ok würd ich sagen... hab im Moment keinen Compiler bei der Hand,
kann das also nicht ausführen und testen ;-)

ein array von char würdest du (glaub ich) folgendermaßen deklarieren:
C++:
array<Typ>(Länge)
also in diesem Fall
C++:
array<char>(3)

Außerdem kannst du die Laufvariable "i" auch erst in der Schleife deklarieren,
sowie die Länge als Länge des Arrays:
C++:
int i = 0; i < g.Length; ++i)

Was genau ist denn dein Problem?
Kompiliert das Ganze nicht? Oder bekommst du nur keine Ausgabe?
 
Hallo!

Also wenn ich es so lasse dann kommen folgende Felermeldungen:
1) warning C4047: 'return' : 'char ' differs in levels of indirection from 'char [3]'
2) warning C4172: returning address of local variable or temporary
3) warning C4047: '=' : 'char [3]' differs in levels of indirection from 'char '
4) error C2106: '=' : left operand must be l-value

1) und 2) zeigen auf die Zeile mit "return f;" und die anderen zwei auf die Zeile mit "g=funktion();"

also bis jetzt habe ich es nur so gelernt ein Feld mit dem Datentyp char zu deklarieren:
char name[größe];

Muss ich nicht "irgendwas" mit dem strcpy machen?

Danke
Mfg Leo
 
Sorry, habe vergessen zu sagen das ich C programmiere, C++ kommt erst...

Bis jetzt habe ich es so gelernt: "datentyp name[größe]" und "char f[5]" ist dann also ein Feld mit 5 gliedern und dem Datentyp char.

Wenn ich ein Feld wie von dir vorgeschlagen deklariere: array<char>(3)
wo ist denn hier der Name des Feldes zu bestimmen?

Was muss ich an meinem Programm noch verändern, damit ich das Feld über return einem anderen Feld zuweisen kann?
Danke
 
Zitat: Außerdem verwendest du in C++ Zeiger
Pointer sind doch schon in c vertreten :)
@puitl: please das nächste mal einen eigenen thread aufmachen
 
@sheel:
Ja, klar... aber ich dachte, es geht um C++ ^^

@puitl:
omg :-o
sry, c wtf? Warum das denn?
Ist das notwendig?
Weil wenn nicht, tu dir selber einen Gefallen und lern C++ oder gleich VC++.NET ^^

Aber okay, sry, dachte du redest von cpp -.-
Dann kann ich dir leider kaum helfen XD

Ich würd das mit dem Array (in VC++) so machen:
C++:
array<char> myArr = new array<char>(3);
Bn mir aber nicht mal sicher, ob das eigentlich stimmt XD
 
Unser Lehrer will das wir mal die Grundlage, also C lernen...werde nen neuen Thread aufmachen...aber Danke nochmal!
Lg
 
Für alle diejenigen, die beim Verwenden von Google oder der Suchfunktion wie ich hier gelandet sein sollten:
Das Problem, welches puitl hat ist, dass er den Zeiger in der Funktion deklariert hat (also lokal), und dass er ihn deshalb nicht als Rückgabewert zurückgeben kann, da beim Beenden der Funktion sämtliche lokale Variablen gelöscht und der Speicher wieder freigegeben werden.
Hier müsste man also den Zeiger und den Speicher/char-Array bereits vorher definieren.
Zum Beispiel so:
Code:
funktion(char f[3])
{
f[0]='A';
f[1]='B';
f[2]='C';

return f;
}

void main()
{
int i=0;
char g[3];

funktion(g);

for(i=0;i<3;i++)
printf("%c",g[i]);
}

Und ja, ich weiß, dass dieser Thread schon ziemlich alt ist, trotzdem ist er via Google leicht zu finden und deshalb sollte er auch eine Lösung oder einen Verweis darauf enthalten.
 
Zurück